|
|||||||||||||||||||||||
|
|||||||||||||||||||||||
|
Announcements
Want a new Job?
Chapters
Services
Feature Zones
|
Note: This is an unedited contribution. If this article is inappropriate,
needs attention or copies someone else's work without reference then please
Report This Article
Passing Data Between Forms
Introduction
Some of you would have faced a scenario where you wanted to pass data from one form to another in WinForms. Honestly, I too had a similar problem (that’s why I am writing this article!). There are so many methods (How many? I don’t know) to pass data between forms in windows application. In this article let me take four important (easiest) ways of accomplishing this.
Let us see all the above methods in detail in the following sections. For a data to be passed between forms using any of the above methods, we need two forms and some controls. Let us start by following the below steps.
The Constructor Approach
This could be the easiest method of all. A method is invoked whenever you instantiate an object. This method is called a constructor. Code a constructor for form2 class with one string parameter. In the constructor assign the text to the label’s text property. Instantiate form2 class in form1’s button click event handler using the constructor with one string parameter and pass the textbox’s text to the constructor. Follow the below steps. Step 1: Code a constructor for form2 class as below
Step 2: Instantiate form2 class in form1’s button click event handler as below private void button1_Click(object sender, System.EventArgs e)
{
Form2 frm=new Form2(textBox1.Text);
frm.Show();
}
The Object Approach
Objects are reference types, and are created on the heap, using the keyword new. Here we are going to pass data using objects. The approach is simple; in form2 we are going to instantiate form1 class. Then instantiate form2 in the button click event handler of form1. After this we are going to pass form1 object to the form2 using form2’s form1 object. The last step is to invoke the form2 window by calling the form2’s show method. Follow the below steps: Step 1: Change the access modifier for textbox in form1 to public
Step 2: In the button click event-handler add the following code. private void btnSend_Click(object sender, System.EventArgs e)
{
Form2 frm= new Form2();
frm.frm1=this;
frm.Show();
}
Step 3: In form2.cs, instantiate form1 class
public class Form2 : System.Windows.Forms.Form
{
private System.Windows.Forms.Label label1;
public Form1 frm1;
Step 4: In Form2’s Load method type cast the object (frm1) of form1 to Form1 and access form1’s textbox and assign its text to label’s text.
Follow the below steps: Step 1: Add a property in form1 to retrieve value from textbox.
Step 2: Add a property in form2 to set the labels’ text public string _textBox
{
set{label1.Text=value;}
}
Step 3: In form1’s button click event handler add the following code.
The Delegates Approach
Technically, a delegate is a reference type used to encapsulate a method with a specific signature and return type. You can encapsulate any matching method in that delegate. Here we are going to create a delegate with some signature and assign a function to the delegate to assign the text from textbox to label. Follow the below steps: Step 1: Add a delegate signature to form1 as below
Step 2: In form1’s button click event handler instantiate form2 class and delegate. Assign a function in form2 to the delegate and call the delegate as below
private void btnSend_Click(object sender, System.EventArgs e)
{
Form2 frm= new Form2();
delPassData del=new delPassData(frm.funData);
del(this.textBox1);
frm.Show();
}
Step 3: In form2, add a function to which the delegate should point to. This function will assign textbox’s text to the label.
public void funData(TextBox txtForm1) { label1.Text = txtForm1.Text; }
Conclusion
These four approaches are very simple in implementing data passing between forms. There are also other methods available in accomplishing the same. Source code for the methods I stated above is given at the top for download. It is time for you to put your thinking cap and find other ways of doing this. Happy Coding!!!
|
||||||||||||||||||||||