Click here to Skip to main content
65,938 articles
CodeProject is changing. Read more.
Articles
(untagged)

How to derive from a parent form

0.00/5 (No votes)
12 Oct 2007 1  
Create a parent form from which other forms can be derived.

Introduction

Once upon a time, there was an intelligent, talented and handsome (lets not deny the facts) developer. One fine Microsoft enabled day said developer was handed a task to completed by the developer - he read the specs smiled and was happy.

This one particular task (which our hero had been entrusted) had many forms/dialog boxes for the user to interact with. Many of these forms were fairly similar and had common traits which were shared – that is branding, buttons control position and functionality.

Breaking the forms down the developer noted that there were many common elements that they all shared and decided that the best way forward was to use a "parent" form. From this parent many of the other forms could inherit from.

A Code Project First!

To try out something totally new for The Code Project I made an instructional video - Chris has spoken with the hampsters and included the special tags and we're all happy to bring to you the article/video pair.

You can reinforce the tutorial with the video...or vice versa. Cheers CodeProject hampsters!

Basic Procedure

The procedure to make use of this methodology is straightforward. We need to make a form which will serve as the "parent form". This form should have the common properties and controls (and functionality) which are used in those forms who will inherit from them.

What do I mean?

If all our forms have a Cancel button, an OK button, background colour then we can set one up as the base from which all the others will get their setup from.

Follow these steps:

  1. Make a base form


  2. Add the OK and cancel buttons and add a picture box control (to hold our branding)



  3. Set the image of the picture box and resize if necessary, background colour and so on.



  4. Add in any common functionality code which you will need.

  5. Looks well lets just say it looks like Chris after too much errr 'Coca Cola'

  6. Build the application - if you don't you will not be able to inherit from the form

  7. Now its time to add in a new form which will inherit from the above parent


  8. When the "Add New Item" dialog box appears – select "Inherited Form"



  9. The next dialog which appears is where you get to choose which form is the new form will be based on – if you did not build your project earlier then the parent form will not appear here.

    Select your parent form and click OK.

  10. A new form will be added to your project. It will look exactly the same as your original parent form. But will have a different form name – in our case it looks like the following

    Note that it even has the same title and the wee arrows on the controls – this indicates that you have an inherited form and the properties cannot be changed yet. If you attempt to modified the properties you will find that you will be unable to. However you will be able to add new controls and code to the form..

    Cool, looking better – save and build the app and you're good to go.

Private – Protected.

Now let's say that you want to keep the OK and the cancel buttons and the branding and so on, but you want to be able to move them about on each form.

To do this you need to :
  1. Go to the designer file for the original form – the parent form In our example its Form1.Designer.cs.

  2. Find the declarations for the controls you want to be able to move – by default they'll all be set to "private".

  1. Change the "private" to "protected" save your work!

  1. Rebuild your application - you must do this before attempting to modify the inherited form

  2. Return to your derived form and you will now be able to move your controls about (yay).

Finally

Once you have rebuilt the solution again (and every time a new form is added)– you will be able to use more forms which are derived from an original. (Or even derive from one of the derived)

Points of Interest

A big "take-home message" from this is that with some forethought you can save yourself so much work its not funny. And that's quite cool I think – as did our hero and he completed his project in record time to adoration and adulation of his peers.

Herein ends the tale.

License

This article has no explicit license attached to it but may contain usage terms in the article text or the download files themselves. If in doubt please contact the author via the discussion board below.

A list of licenses authors might use can be found here