在窗体编程中,经常碰到到要在form2中调用form1中的方法并改变form1中控件值,但是又不能用new form1这种方法,因为这是生成一个实例。
网上有些说法是用委托和事件,笔者尝试没有成功,可能是功力不够,但笔者用另一种方法实现 了同样的效果。
首先,重载form2的构造函数,在form1调用form2的时候将form1本身作为参数传入form2,这时,form2作为一个引用传到了form2,并用一个from1型的变量f1接收。这时就可以用f1来调用修改form1的方法和控件值了。具体代码如下:
Form1.cs:
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
Form2 f2 = new Form2(this);
f2.Show();
}
#region 往textbox1中入数据
public void WriteTextbox1(string str)
{
textBox1.Text = str;
}
#endregion
}
Form2.cs:
public partial class Form2 : Form
{
private Form1 f1;
public Form2()
{
InitializeComponent();
}
public Form2(Form1 f)
{
InitializeComponent();
f1 = f;
}
private void button1_Click(object sender, EventArgs e)
{
//将textbox1中的值写入form1中的textbox1中
f1.WriteTextbox1(textBox1.Text);
}
}