Click here to Skip to main content
Click here to Skip to main content

How to derive from a parent form

, 12 Oct 2007 CPOL
Rate this:
Please Sign up or sign in to vote.
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, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)

Share

About the Author

bryce
Software Developer (Senior)
Australia Australia
No Biography provided

Comments and Discussions

 
Question[My vote of 1] My Vote of One Pinmemberdl4gbe8-Oct-11 8:51 
AnswerRe: [My vote of 1] My Vote of One Pinmemberbryce9-Oct-11 14:26 
GeneralRe: [My vote of 1] My Vote of One Pinmemberdl4gbe10-Oct-11 2:16 
GeneralRe: [My vote of 1] My Vote of One Pinmemberbryce10-Oct-11 14:20 
GeneralMy vote of 5 Pinmvpthatraja29-May-11 17:53 
GeneralNot All controls can be set to protected... Pinmembernionios2725-May-08 5:19 
GeneralQuestion. Pinmembertopcatalpha16-Oct-07 21:53 
GeneralRe: Question. Pinmemberbryce18-Oct-07 15:21 
GeneralRe: Question. Pinmembertopcatalpha18-Oct-07 22:03 
QuestionHow to do Visual Inheritence in WPF? PinmemberProbeer Das15-Oct-07 6:24 
AnswerRe: How to do Visual Inheritence in WPF? Pinmemberbryce15-Oct-07 15:50 
QuestionInherited control actions (button click etc.) PinmemberChaitanya Joshi13-Oct-07 23:56 
GeneralRe: Inherited control actions (button click etc.) PinmemberChaitanya Joshi14-Oct-07 0:01 
GeneralRe: Inherited control actions (button click etc.) Pinmemberbryce14-Oct-07 1:54 
GeneralRe: Inherited control actions (button click etc.) PinmemberChaitanya Joshi14-Oct-07 21:57 
GeneralRe: Inherited control actions (button click etc.) PinmemberChaitanya Joshi15-Oct-07 23:03 
AnswerRe: Inherited control actions (button click etc.) PinmemberDaniel Ruehmer15-Oct-07 21:41 
GeneralRe: Inherited control actions (button click etc.) PinmemberChaitanya Joshi15-Oct-07 22:58 
GeneralRe: Inherited control actions (button click etc.) PinmemberDaniel Ruehmer17-Oct-07 2:33 
GeneralEditing designer code PinmemberOrlandoCurioso13-Oct-07 2:52 
GeneralRe: Editing designer code Pinmemberbryce13-Oct-07 3:01 
GeneralRe: Editing designer code Pinmembersherifffruitfly13-Oct-07 19:17 
GeneralRe: Editing designer code PinmemberTobiasP15-Oct-07 1:47 
General5 for doing the video Pinmembersameeraperera12-Oct-07 6:00 
GeneralRe: 5 for doing the video PinmemberInitri12-Oct-07 6:32 
I agree!

 
Matthew MacSuga
Sr. Software Developer
Interlink Advantage
509-789-2443

GeneralRe: 5 for doing the video Pinmemberricmil4212-Oct-07 8:46 
GeneralRe: 5 for doing the video Pinmembernemopeti12-Oct-07 9:40 
GeneralRe: 5 for doing the video PinmemberMuhadeeb9912-Oct-07 11:37 
GeneralRe: 5 for doing the video PinmemberSteve40012-Oct-07 11:54 
GeneralRe: 5 for doing the video PinmemberTim Brats15-Oct-07 8:07 
GeneralRe: 5 for doing the video PinmemberBen_6415-Oct-07 21:56 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.

| Advertise | Privacy | Terms of Use | Mobile
Web03 | 2.8.141220.1 | Last Updated 12 Oct 2007
Article Copyright 2007 by bryce
Everything else Copyright © CodeProject, 1999-2014
Layout: fixed | fluid