Be careful with inheritance combined with the visual designer of the studio. If you are not a "friend" with all the attributes associated with the designer ( BrowsableAttribute, DefaultValueAttribute, ...) and support elements (such as MyProperty, ShouldSerializeMyProperty(), ResetMyProperty()), an attempt to re-use code and safe time may cause a headache.
If you can, use composition instead of inheritance. I have a lot of experience developing a form in the designer and creating panels for the "content" controls.
And content controls can be inherited from usercontrol, and you can also design them in visual studio designer.
After that, you can simply combine any predefined form with any predefined control.
A simple example of the case you described:
public partial class FormWithPicture : Form {
private Control content;
public Control Content {
get { return this.content; }
set {
this.content = value;
this.panel1.Controls.Clear();
if (null != value) {
this.panel1.Controls.Add(value);
}
}
}
public FormWithPicture() {
InitializeComponent();
}
}
new FormWithPicture {
Content = new ContentControl_A()
}.Show();