Click here to Skip to main content
65,938 articles
CodeProject is changing. Read more.
Articles
(untagged)

Pass Data from One Form to Another Form

0.00/5 (No votes)
25 Mar 2009 1  
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:

//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 has no explicit license attached to it but may contain usage terms in the article text or the download files themselves. If in doubt please contact the author via the discussion board below.

A list of licenses authors might use can be found here