例如:要在Form2窗体类中,改变Form1窗体中某控件的属性(内容、尺寸等)。
本人所知道的至少有两种方式,第一种方法类似于设置从属关系,具体方式如下:
1、在Form1中添加一个要改变属性的控件,并在属性对话框中设置该控件的Modifiers属性值为public。
2、在需要定义或创建Form2窗口的事件中添加两行代码:
Form2 myform = new Form2(); //本身就需要创建的
myform.Owner = this; //设置从属关系
3、在Form2中,自己想要修改Form1控件属性的代码位置处,添加代码进行修改。
(this.Owner as Form1).Text = "修改后";
第二种方式是指通过在构造函数中传参的方式,进行组合。具体方式如下:
1、在Form1中添加一个要改变属性的控件,并在属性对话框中设置该控件的Modifiers属性值为public。
2、Form1中添加用于修改指定控件与属性的公有函数,并在实例化Form2时,多传一个Form1参数
public partial class Form1 : Form
{
//添加一个函数,用于修改指定控件与属性。
public void UpdateTextBox(System.Windows.Forms.TextBox tb1,string newData)
{
tb1.Text = newData; //这里是修改text值,也可以修改其它属性。
}
//点击按钮,显示Form2窗口
private void buttonShowForm2_Click(object sender, EventArgs e)
{
Form2 form2 = new Form2(this); //作为参数,将Form1传入Form2窗体
form2.Show();
}
}
3、在Form2窗体中接收参数, 并调用Form1函数修改控件属性。
public partial class Form2 : Form
{
private Form1 _form1; //定义Form1窗体变量
public Form2()
{
InitializeComponent();
}
//添加一个具有一个参数的构造函数
public Form2(Form1 form): this()
{
_form1 = form;
}
//当鼠标点击了button1
private void button1_Click(object sender, EventArgs e)
{
//在Form2窗体中调用Form1窗体的函数,并修改其控件属性
_form1.UpdateTextBox(_form1.TextBox1, “修改后的值”);
}
}