Passing Values between Forms

Hello

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.

thx

karraAsked:
Who is Participating?
 
lampy24Commented:
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
0
 
_TAD_Commented:


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).
0
 
lampy24Commented:
0
Cloud Class® Course: C++ 11 Fundamentals

This course will introduce you to C++ 11 and teach you about syntax fundamentals.

 
karraAuthor Commented:
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)
{

................
ValuePass(RefNum,SSNum);
}

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 + "";
}
0
 
lampy24Commented:
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
0
 
lampy24Commented:
What problems are you encountering with your code?
0
 
karraAuthor Commented:
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..
0
 
karraAuthor Commented:
I am calling form1( ) from NewOffender( )  by the click of a button.. (just in case u want to know more.. )
0
 
sholodakCommented:
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.

Scott
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

All Courses

From novice to tech pro — start learning today.