Click here to Skip to main content
Licence CPOL
First Posted 25 Mar 2009
Views 39,026
Downloads 935
Bookmarked 30 times

Pass Data from One Form to Another Form

By | 25 Mar 2009 | Article
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, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)

About the Author

Angsuman Chakraborty

Software Developer
NA
Bangladesh Bangladesh

Member

Graduated with IT in 2006.
 
Currently working as a software engineer.

Sign Up to vote   Poor Excellent
Add a reason or comment to your vote: x
Votes of 3 or less require a comment

Comments and Discussions

 
You must Sign In to use this message board. (secure sign-in)
 
Search this forum  
 FAQ
    Noise  Layout  Per page   
  Refresh
GeneralMy vote of 3 PinmemberMeysampaknahad4:21 9 Jan '12  
Generalsame code Pinmemberantomic0722:25 12 Jun '11  
GeneralRe: same code PinmemberAngsuman Chakraborty0:15 13 Jun '11  
GeneralRe: same code Pinmemberantomic0722:20 15 Jun '11  
GeneralRe: same code PinmemberAngsuman Chakraborty22:53 15 Jun '11  
GeneralRe: same code Pinmemberantomic072:41 16 Jun '11  
GeneralRe: same code Pinmemberantomic0722:24 15 Jun '11  
AnswerRe: same code Pinmvpthatraja20:55 26 Jan '12  
GeneralCalling Methods on Parent Form (MDI) PinmemberAllanMunro22:47 6 Dec '09  
GeneralMy vote of 1 Pinmemberramuknavap15:14 1 Apr '09  
GeneralRe: My vote of 1 [modified] PinmemberAngsuman Chakraborty1:45 11 Jun '09  
QuestionObserver Pattern? PinmemberPat Tormey0:29 31 Mar '09  
GeneralMy vote of 2 PinmemberDinand23:07 30 Mar '09  
GeneralSuggestion PinmemberDan1235416:09 30 Mar '09  
AnswerRe: Suggestion PinmemberAngsuman Chakraborty1:40 31 Mar '09  
GeneralMy vote of 2 PinprotectorMarc Clifton2:30 30 Mar '09  
GeneralSQL Injection Pinmembercanozurdo3:03 26 Mar '09  
GeneralSuggestion PinmemberBashir Magomedov0:13 26 Mar '09  
GeneralRe: Suggestion PinmemberAngsuman Chakraborty2:00 26 Mar '09  
GeneralSimply good!!! PinmemberMd. Ismail21:49 25 Mar '09  
GeneralGreat start!! PinmemberMember 299245221:48 25 Mar '09  
GeneralNice to see your first article. PinmemberRazan Paul (Raju)21:43 25 Mar '09  

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.

Permalink | Advertise | Privacy | Mobile
Web01 | 2.5.120517.1 | Last Updated 26 Mar 2009
Article Copyright 2009 by Angsuman Chakraborty
Everything else Copyright © CodeProject, 1999-2012
Terms of Use
Layout: fixed | fluid