Passing Values between Forms

Posted on 2004-04-20
Last Modified: 2010-04-15

I have a form A which accepts 2 primary keys ID's id1 and id2. I want to pass these 2 Ids to 3/4 forms in the same project. I am presently using serialization to pass these values. It works fine..

Now i wanted to do updates of the existing customers.. So i am inheriting all the forms.. Now the problem is: when i load the inherited forms i am still seeing the old values from the original forms.. But i need the lastest values in the update forms. (not original form values)

So i was just wondering if there is any round about way of passing values between forms instead of using serilaization.. i would appreciate if u can help me providing me with an example.


Question by:karra
LVL 22

Expert Comment

ID: 10870457

This is a case where a singleton might be very helpful to you.  

Create a user class that inherits from a singleton (which has a static instance function).

Expert Comment

ID: 10870720

Author Comment

ID: 10871562
Hey Lampy24,

As per ur's articles i wrote the following. Can u please look into it and let me know what am i doing wrong.

Aim: To pass RefNo and SSN to the child form.
main form:
public delegate void ValuePassEventHandler(int RefNo, int SSN);
public event ValuePassEventHandler ValuePass;

private void btnSubmit_Click(object sender, System.EventArgs e)


Child Form:
public form1()
frmNewOffender newOff = new frmNewOffender();
newOff.ValuePass +=new Offender.frmNewOffender.ValuePassEventHandler(this.AcceptValue);

private void AcceptValue(int RefNo, int SSN)
             txtRefNo.Text = RefNo + "";
             txtSSN.Text = SSN + "";

Expert Comment

ID: 10872721
Hey karra,

Is the frmNewOffender method .Show() called before the submit button?  I think you need to do this before you call the event.  Try this if not let me know, I am testing this to see if I can get it to work with invoking the Show method on the form.

Good Luck
Highfive + Dolby Voice = No More Audio Complaints!

Poor audio quality is one of the top reasons people don’t use video conferencing. Get the crispest, clearest audio powered by Dolby Voice in every meeting. Highfive and Dolby Voice deliver the best video conferencing and audio experience for every meeting and every room.


Expert Comment

ID: 10872765
What problems are you encountering with your code?

Author Comment

ID: 10872870
I am not calling frmNewOffender.Show() anywhere..

All i wanted to do is: Pass the 2 Ids from the frmNewOffender() to form1..

When i complied the code it gave me no errors. But whn i ran the code it said: Object was not found as exception and then the 2 Id textboxes in the form1 were Null..

Author Comment

ID: 10872879
I am calling form1( ) from NewOffender( )  by the click of a button.. (just in case u want to know more.. )

Accepted Solution

lampy24 earned 50 total points
ID: 10879296
The problem you are having is that you need to initialize your child form: form1.   The error is occurring because there the object attached to the delegate(form1) is not initialized.  So some where in your main form you need to do this before the submit button is pressed:

Form1 form1 = new Form1();

Good Luck

Expert Comment

ID: 10885068
You should make a variable for the 3 or 4 forms accessible as a private or protected variable from the main form.  I'm assuming that you are getting the ID's on the main form.  I would attach an event handler to the textbox/combobox/whatever to fire whenever an ID column changes.  In this event handler, simply set the value in each of the 3/4 forms.  You can do this with or without showing the forms.

In other words, in the constructor of the main form, just create the child forms.  You don't have to show them.  In each child form, either set up a public variable for the ID fields or set up a function to set those values.  The event handler will take care of keeping the child forms values up to date.  

Another way to handle this would be to make event handlers within the child forms and attach them to the textbox change event on the main form.  i.e., something along the lines of frmMain.txtID1.TextChanged += new EventHandler(frmChild1.ID_Changed); frmMain.txtID1.TextChanged += new EventHandler(frmChild2.ID_Changed);, etc., etc.  This way the private forms would be notified directly when the value changed.  It might be a little trickier to get at the current value this way, but it is doable.


Featured Post

How to run any project with ease

Manage projects of all sizes how you want. Great for personal to-do lists, project milestones, team priorities and launch plans.
- Combine task lists, docs, spreadsheets, and chat in one
- View and edit from mobile/offline
- Cut down on emails

Join & Write a Comment

This article is for Object-Oriented Programming (OOP) beginners. An Interface contains declarations of events, indexers, methods and/or properties. Any class which implements the Interface should provide the concrete implementation for each Inter…
Calculating holidays and working days is a function that is often needed yet it is not one found within the Framework. This article presents one approach to building a working-day calculator for use in .NET.
This video shows how to remove a single email address from the Outlook 2010 Auto Suggestion memory. NOTE: For Outlook 2016 and 2013 perform the exact same steps. Open a new email: Click the New email button in Outlook. Start typing the address: …
This tutorial demonstrates a quick way of adding group price to multiple Magento products.

762 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

21 Experts available now in Live!

Get 1:1 Help Now