We help IT Professionals succeed at work.

Check out our new AWS podcast with Certified Expert, Phil Phillips! Listen to "How to Execute a Seamless AWS Migration" on EE or on your favorite podcast platform. Listen Now


How to access System.Windows.Forms resources?

Medium Priority
Last Modified: 2013-12-17
I would like to access the resources in System.Windows.Forms, specifically icons and assign them to misc buttons.

I know I could rip them and add them to the Resource file of the Project, however that would be a lot of work considering the number of icons I need to use.

Please provide small code sample in C#, thanks in advance!
Watch Question

Top Expert 2009
Unlock this solution and get a sample of our free trial.
(No credit card required)


This looks good, is there anyway to access these from the VS 2005 Form Designer?
Do you mean:
"global::<projectname>.Properties.Resources" ???


Exactly, I have tried


with no success...
Top Expert 2009

> This looks good, is there anyway to access these from the VS 2005 Form Designer?
You cannot access these elements directly from the form designer because the Visual Studio has never seemed it necessary to make it possible to browse the resources inside a DLL directly from the Form designer (i.e., when you select Image of a Picturebox). It is however possible to load the DLL directly in VS to browse the resources, but then you'd have to save them to another location.

Doing that in one time in a loop as I showed above (you can simply copy the Stream to disk) is then much easier.

If you want to access them by code, you can do so too, using just the same technique.

-- Abel --
Top Expert 2009

> global::System.Windows.Forms.Resources
That won't work, because that should mean that the Resources property should be implemented and made public. The Resources property the way you know it is added by Visual Studio as a convenience but does not have to be implemented.


Thanks for your abel!
Top Expert 2009

Just tried it as a little experiment, to be sure what I was telling was correct and the screenshot shows a few of the output bmp files that I have from the Forms.dll. Use the following code to "dump" all the ico, bmp and other resources from any dll:

Assembly asm = Assembly.GetAssembly(typeof(Form));
string[] resources = asm.GetManifestResourceNames();
foreach (string s in resources)
    using (Stream strIn = asm.GetManifestResourceStream(s))
    using(Stream strOut = File.Open(@"d:\temp\data\" + s, FileMode.OpenOrCreate))
        BufferedStream outStream = new BufferedStream(strOut);
        BufferedStream inStream = new BufferedStream(strIn);
        byte[] buf = new byte[4096];
        int bytesRead = 0;
        while ((bytesRead = inStream.Read(buf, 0, 4096)) > 0)
            outStream.Write(buf, 0, bytesRead);

Open in new window



Top Expert 2009

You're welcome (just saw you already graded, but figured you'd like to know how to access / save the resource) ;-)

it is not "global::System.Windows.Forms.Resources".
You shouldn't write "System" but your project's name....
As far as I know (and I'm using this code), it should work.

Anyway, glad it's working that other way too! :-) (and I learned something new...)
Top Expert 2009

> You shouldn't write "System" but your project's name....
> As far as I know (and I'm using this code), it should work.

You may want to check the OP's question again: (s)he doesn't want his/her self created resources, but the resources from another DLL, which is in this case the loaded DLL System.Windows.Forms.DLL. You cannot access that by using your own classname, because that would refer to your own class.
Sorry, and thanks!
Unlock the solution to this question.
Thanks for using Experts Exchange.

Please provide your email to receive a sample view!

*This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.


Please enter a first name

Please enter a last name

8+ characters (letters, numbers, and a symbol)

By clicking, you agree to the Terms of Use and Privacy Policy.