I have a simple windows Forms application where in I have a usercontrol called “MyControl” derived from PictureBox.
In this MyControl, I have the following code :
Sub New()
MyBase.New()
Me.BackgroundImage = My.Resources.MyImage 'This is a project resource image
End Sub
Now when I drag and drop this MyControl into a form, I get the image and also those stuff. But the problem is that the BackgroundImage is being copied into the Form’s local .resx file.
So when I look into the form.designer file, I find the following :
Me.MyControl1.BackgroundImage = CType(resources.GetObject("MyControl1.BackgroundImage"), System.Drawing.Image)
This is a problem and also when I try to change the image in the control, it does not get reflected in the form’s control instance. So this is a pain.
How can this be solved? Guess this is going to be trial and error research, but please help.
You have to tell the designer that it should not serialize the value of the BackgroundImage property. You do this by using the
<DesignerSerializationVisibility>attribute:I also used the
<Browsable>attribute, it no longer makes sense for the user to change the image since changes won’t be persisted anymore.