I've worked with C# and other programming languages for a while now, and am ashamed to say I'm unfamiliar with the standard on where to put resources such as program icons, and how to reference them within my code.
Specifically, for a C# Windows Forms Application, where would it be appropriate to put my icon resources, and what is the path for referencing them once I get them in the correct place?
Thanks very much for any assistance.
On the Tools menu, click Resource Files. In the Resource Files dialog box, click Add. In the Add File dialog box, select the file that you updated, and then click OK. In the Microsoft Office InfoPath dialog box, click Replace the existing file, and then click OK.
In Resource View, select your . rc file, then use Edit > Add Resource and choose the type of resource to add to your project. You can also right-click the . rc file in Resource View and choose Add Resource from the shortcut menu.
You can add a Resources.resx file to your project and add resources like images, strings, files to it. Then you can reference these resources through an automatically-generated Resources
class. By default, Visual Studio will create a Resources.resx file in the Properties directory. Any resources you add to the resources file will be added to the Resources directory by default.
e.g.
this.BackgroundImage = Properties.Resources.MyImage;
For completion I wanted to expound on some of the answers listed.
Resources.resx
should have been created when your WinForms project was created. You can view it under Properties
in the Solution Explorer
.
Double click Resources.resx
to open the designer. You can copy from Windows Explorer
and paste in the VS resources designer. This tool is smart enough to figure out what type of resource it is, and you can see in the screen shot below that similar resource types are grouped together under the menu bar's drop down list.
From this point you can follow the accepted answer and manually assign the resource to a control's property...
this.BackgroundImage = Properties.Resources.MyImage;
Using the designer, you can embed a resource in a form's .resx
.
Select the control in the designer and open the Properties
window (F4
is default shortcut key). Find the appropraite property, such as Icon
for a form. Click the ellipses button to bring up the Open File
dialog. Browse to the resource (if you embedded it in the Resources.resx
it will actually be in the Resources
folder - which would have been created when you added your first resource to Resources.resx
- and you should use the first method above), and select the correct resource.
In the image below you can see the "scrape.ico" file being set as the Main
form's Icon
.
This example would end up generating a line in the Main
form's designer like this...
this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
where...
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(Main));
and in main.resx
...
<data name="$this.Icon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
...img data...
</value>
</data>
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With