C#:在一个窗体类中改变另一个窗体控件的属性

例如:要在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, “修改后的值”);
          }
}

 

你可能感兴趣的:(C#:在一个窗体类中改变另一个窗体控件的属性)