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:
- Make a base form
- Add the OK and cancel buttons and add a picture box control (to hold our
branding)
- Set the image of the picture box and resize if necessary, background colour
and so on.
- Add in any common functionality code which you will need.
- Looks well lets just say it looks like Chris after too much errr 'Coca Cola'
- Build the application - if you don't you will not be able to inherit from
the form
- Now its time to add in a new form which will inherit from the above parent
- When the "Add New Item" dialog box appears – select "Inherited Form"
- 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.
- 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 :
- Go to the designer file for the original form – the parent form In our
example
its Form1.Designer.cs.
- Find the declarations for the controls you want to be able to move – by
default they'll all be set to "
private
".
- Change the "
private
" to "protected
"
save your work!
- Rebuild your application - you must do this before
attempting to modify the inherited form
- 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.