Click here to Skip to main content
15,867,771 members
Articles / Programming Languages / C#

How to derive from a parent form

Rate me:
Please Sign up or sign in to vote.
4.67/5 (43 votes)
12 Oct 2007CPOL4 min read 93.5K   50   32
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

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

    Image 2

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

    Image 3

  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

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

    Image 5

  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.

    Image 6

    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

    Image 7

    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..

    Image 8

    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".

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

    Image 10
  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).

    Image 11

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)

Image 12

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)


Written By
Software Developer (Senior) TMR
Australia Australia
This member has not yet provided a Biography. Assume it's interesting and varied, and probably something to do with programming.

Comments and Discussions

 
QuestionParent form is truncated Pin
robertd90316-Nov-21 19:40
robertd90316-Nov-21 19:40 
Question[My vote of 1] My Vote of One Pin
dl4gbe8-Oct-11 7:51
dl4gbe8-Oct-11 7:51 
AnswerRe: [My vote of 1] My Vote of One Pin
bryce9-Oct-11 13:26
bryce9-Oct-11 13:26 
GeneralRe: [My vote of 1] My Vote of One Pin
dl4gbe10-Oct-11 1:16
dl4gbe10-Oct-11 1:16 
GeneralRe: [My vote of 1] My Vote of One Pin
bryce10-Oct-11 13:20
bryce10-Oct-11 13:20 
GeneralMy vote of 5 Pin
thatraja29-May-11 16:53
professionalthatraja29-May-11 16:53 
GeneralNot All controls can be set to protected... Pin
nionios2725-May-08 4:19
nionios2725-May-08 4:19 
GeneralQuestion. Pin
topcatalpha16-Oct-07 20:53
topcatalpha16-Oct-07 20:53 
GeneralRe: Question. Pin
bryce18-Oct-07 14:21
bryce18-Oct-07 14:21 
GeneralRe: Question. Pin
topcatalpha18-Oct-07 21:03
topcatalpha18-Oct-07 21:03 
QuestionHow to do Visual Inheritence in WPF? Pin
Probeer Das15-Oct-07 5:24
Probeer Das15-Oct-07 5:24 
AnswerRe: How to do Visual Inheritence in WPF? Pin
bryce15-Oct-07 14:50
bryce15-Oct-07 14:50 
QuestionInherited control actions (button click etc.) Pin
Chaitanya Joshi13-Oct-07 22:56
Chaitanya Joshi13-Oct-07 22:56 
GeneralRe: Inherited control actions (button click etc.) Pin
Chaitanya Joshi13-Oct-07 23:01
Chaitanya Joshi13-Oct-07 23:01 
GeneralRe: Inherited control actions (button click etc.) Pin
bryce14-Oct-07 0:54
bryce14-Oct-07 0:54 
GeneralRe: Inherited control actions (button click etc.) Pin
Chaitanya Joshi14-Oct-07 20:57
Chaitanya Joshi14-Oct-07 20:57 
GeneralRe: Inherited control actions (button click etc.) Pin
Chaitanya Joshi15-Oct-07 22:03
Chaitanya Joshi15-Oct-07 22:03 
AnswerRe: Inherited control actions (button click etc.) Pin
Daniel Ruehmer15-Oct-07 20:41
Daniel Ruehmer15-Oct-07 20:41 
GeneralRe: Inherited control actions (button click etc.) Pin
Chaitanya Joshi15-Oct-07 21:58
Chaitanya Joshi15-Oct-07 21:58 
GeneralRe: Inherited control actions (button click etc.) Pin
Daniel Ruehmer17-Oct-07 1:33
Daniel Ruehmer17-Oct-07 1:33 
GeneralEditing designer code Pin
OrlandoCurioso13-Oct-07 1:52
OrlandoCurioso13-Oct-07 1:52 
GeneralRe: Editing designer code Pin
bryce13-Oct-07 2:01
bryce13-Oct-07 2:01 
GeneralRe: Editing designer code Pin
sherifffruitfly13-Oct-07 18:17
sherifffruitfly13-Oct-07 18:17 
GeneralRe: Editing designer code Pin
TobiasP15-Oct-07 0:47
TobiasP15-Oct-07 0:47 
General5 for doing the video Pin
sameeraperera12-Oct-07 5:00
sameeraperera12-Oct-07 5:00 

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

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