Click here to Skip to main content
15,886,608 members
Articles / Programming Languages / C#

Pass Data from One Form to Another Form

Rate me:
Please Sign up or sign in to vote.
3.54/5 (15 votes)
25 Mar 2009CPOL2 min read 83.2K   1.8K   35   22
How to transfer data from one form to another form

Introduction

For some applications, it is sometimes common to have parent and child forms, where a user is guided to the child form to input something and next the changes that he has made are visible
in the parent form without closing the child form.

If the program doesn't allow this, the only solution is closing the child form programmatically and returning the user to the parent form.

Suppose we have a program where the user will input 1000 customer names at the end of the day. Would it be efficient and user friendly to return the user to the parent form after he inputs each and every customer name.

The answer is no!

This is because the user will have to open the child form 1000 times to input 1000 customer names.

Instead of opening the child form multiple times, there is a way that I know which passes data from the child form to the parent form without closing the child form. The changes that the user has made are visible at the back of the child form, which is in the parent form.

Well, this simple application passes data from one form to another form. Many programmers face this kind of problem when the necessity of passing data from one form to another form occurs.

I have seen many articles where many experienced programmers wrote about data passing, but this one is the simplest one to learn (I hope :-)).

First of all, you have to create a database. I created a database and named it CustomerInfo.

Then add a Table named Customer, and a field to it named CustomerName(Varchar(50)).

DatabaseScript

Using the Code

Create two forms frmCustomers and frmCustomer. One should hold all the Customers, and another should simply save the customer like the following:

DatabaseScript

The following is for the frmCustomers form which shows all the customers in the Datagrid view list:

C#
//This code is for the frmCustomers Form            
private void frmCustomers_Load(object sender, EventArgs e)
{
    //load all customers
    loadCustomer();
}        

public void loadCustomer()
{
    //load all customers

    SqlConnection con = new SqlConnection("Data Source=localhost; 
	Database=CustomerInfo; UID=achakraborty; Integrated Security = True;");
    con.Open();

    SqlDataAdapter da = new SqlDataAdapter("SELECT * FROM Customer", con);
					//SQL query
					
	DataSet ds = new DataSet("Customer");
    da.Fill(ds, "Customer");

//Fill the dataset
    grd.DataSource = ds.Tables["Customer"];
//set the grid source to customer data table
}

private void btnAdd_Click(object sender, EventArgs e)
{
    //During this operation, bind the Customer form event with a method 
    //which will fire from Customer form

    frmCustomer c = new frmCustomer();
    c.CustomerEventHandler += new EventHandler(RefreshCustomerList);
                        //This is the method which will fire upon any change
    c.ShowDialog();
}

void RefreshCustomerList(object sender, EventArgs e)
{
    //load all customers
    SqlConnection con = new SqlConnection("Data Source=localhost; 
	Database=CustomerInfo; UID=achakraborty; Integrated Security = True;");
    con.Open();
    SqlDataAdapter da = new SqlDataAdapter("SELECT * FROM Customer", con);
    DataSet ds = new DataSet("Customer");
    da.Fill(ds, "Customer");
    grd.DataSource = ds.Tables["Customer"];
    con.Close();
}

private void btnExit_Click(object sender, EventArgs e)
{
    this.Close();
}                 

//The following code is for frmCustomer form
public event System.EventHandler CustomerEventHandler;
private void btnSave_Click(object sender, EventArgs e)
{
    //First of all open a database connection
    SqlConnection con = new SqlConnection("Data Source=localhost; 
	Database=CustomerInfo; UID=achakraborty; Integrated Security = True;");
    con.Open();

    //Execute Command object to insert data in the corresponding customer table
    SqlCommand cmd = new SqlCommand("Insert Into Customer VALUES
		('" + txtCustomerName.Text.ToString().Trim() + "')", con); 
    cmd.ExecuteNonQuery();
    con.Close();

    if (CustomerEventHandler != null)
    { 
        CustomerEventHandler(sender, e);

	//firing if any change made 
    }

    txtCustomerName.Clear();
    txtCustomerName.Focus();
}

I'm happy to present my first article on The Code Project. I'm hoping to use the experience to improve my writing style. So your comments, suggestions and criticism are very welcome.

History

  • 26th March, 2009: Initial post

License

This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)


Written By
Software Developer NA
Bangladesh Bangladesh
Graduated with IT in 2006.

Currently working as a software engineer.

Comments and Discussions

 
GeneralMy vote of 3 Pin
Meysampaknahad9-Jan-12 4:21
Meysampaknahad9-Jan-12 4:21 
Generalsame code Pin
antomic0712-Jun-11 22:25
antomic0712-Jun-11 22:25 
i want this code in vb.net winform
GeneralRe: same code Pin
Angsuman Chakraborty13-Jun-11 0:15
Angsuman Chakraborty13-Jun-11 0:15 
GeneralRe: same code Pin
antomic0715-Jun-11 22:20
antomic0715-Jun-11 22:20 
GeneralRe: same code Pin
Angsuman Chakraborty15-Jun-11 22:53
Angsuman Chakraborty15-Jun-11 22:53 
GeneralRe: same code Pin
antomic0716-Jun-11 2:41
antomic0716-Jun-11 2:41 
GeneralRe: same code Pin
antomic0715-Jun-11 22:24
antomic0715-Jun-11 22:24 
AnswerRe: same code Pin
thatraja26-Jan-12 20:55
professionalthatraja26-Jan-12 20:55 
GeneralCalling Methods on Parent Form (MDI) Pin
AllanMunro6-Dec-09 22:47
AllanMunro6-Dec-09 22:47 
GeneralMy vote of 1 Pin
ramuknavap1-Apr-09 15:14
ramuknavap1-Apr-09 15:14 
GeneralRe: My vote of 1 [modified] Pin
Angsuman Chakraborty11-Jun-09 1:45
Angsuman Chakraborty11-Jun-09 1:45 
QuestionObserver Pattern? Pin
Pat Tormey31-Mar-09 0:29
Pat Tormey31-Mar-09 0:29 
GeneralMy vote of 2 Pin
Dinand30-Mar-09 23:07
Dinand30-Mar-09 23:07 
GeneralSuggestion Pin
Dan1235430-Mar-09 16:09
Dan1235430-Mar-09 16:09 
AnswerRe: Suggestion Pin
Angsuman Chakraborty31-Mar-09 1:40
Angsuman Chakraborty31-Mar-09 1:40 
GeneralMy vote of 2 Pin
Marc Clifton30-Mar-09 2:30
mvaMarc Clifton30-Mar-09 2:30 
GeneralSQL Injection Pin
canozurdo26-Mar-09 3:03
canozurdo26-Mar-09 3:03 
GeneralSuggestion Pin
Bashir Magomedov26-Mar-09 0:13
Bashir Magomedov26-Mar-09 0:13 
GeneralRe: Suggestion Pin
Angsuman Chakraborty26-Mar-09 2:00
Angsuman Chakraborty26-Mar-09 2:00 
GeneralSimply good!!! Pin
Md. Ismail25-Mar-09 21:49
Md. Ismail25-Mar-09 21:49 
GeneralGreat start!! Pin
Morshed Anwar25-Mar-09 21:48
professionalMorshed Anwar25-Mar-09 21:48 
GeneralNice to see your first article. Pin
Razan Paul (Raju)25-Mar-09 21:43
Razan Paul (Raju)25-Mar-09 21:43 

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.