在窗体编程中,经常碰到到要在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);
}
}

本文介绍了一种在窗体编程中,不使用new实例化方式,而通过重载构造函数传入引用,实现Form2调用Form1中方法和控件操作的技巧。具体步骤包括在Form1的构造函数中传入自身作为参数,并在Form2中利用此引用进行操作。

6038

被折叠的 条评论
为什么被折叠?



