在C#中如何在窗体间访问其他窗体中的成员呢?(转)

在C#中如何在窗体间访问其他窗体中的成员呢?

红色字体为需要注意的地方

方法一:重载构造函数

新建2个窗体.分别为Form2和Form3

Form2中有一个TextBox,名字为textBox1.如图所示:

 

 

现在我想通过Form3里面的代码.来修改Fomr2中的textBox1的内容该怎么办呢??

我们来重载Form3的构造函数.Form3代码如下:

   public partial class Form3 : Form
    {
        private Form target = null;

        public Form3()
        {
            InitializeComponent();
        }

        public Form3(Form form)
        {
            InitializeComponent();

            target = form;
        }

        private void button1_Click(object sender, EventArgs e)
        {
            target.Controls["textBox1"].Text = "你是猪!!!";
        }

    }

这样通过button1的点击可以修改Form2的textBox1的值.

当然这种情况下Form3必须是由Form2打开的.

Form2打开Form3的代码如下:

Form3 form = new Form3(this);
form.Show();

 

点击Form3的button1结果如下:

 

 

 

 

方法二:使用静态成员

Form2代码如下:

public partial class Form2 : Form
    {
        public Form2()
        {
            InitializeComponent();
        }

        public static string MySqlString = "";
    }

 

在Form3中可以直接通过类访问该变量.代码如下

private void button1_Click(object sender, EventArgs e)
        {
            //target.Controls["textBox1"].Text = "你是猪!!!";

            Form2.MySqlString = "select * from UserInfo";
        }

 

控件同样也可以声明为static的.但是你要确保你的窗体只有一个实例.否则会出错..(十分不推崇把控件声明为static的.成员变量还可以)

 

方法三:设置Owner属性(基本等同与重载构造)

同样Form3必须是由Form2打开的.

Form2打开Fomr3的代码:

            Form3 form = new Form3();
            form.Owner = this;
            form.ShowDialog();

 

Form3操作Form2控件的代码如下:

        private void button1_Click(object sender, EventArgs e)
        {
            this.Owner.Controls["textBox1"].Text = "你是猪!!!";
        }

已投稿到:
郑重声明:资讯 【在C#中如何在窗体间访问其他窗体中的成员呢?(转)】由 发布,版权归原作者及其所在单位,其原创性以及文中陈述文字和内容未经(企业库qiyeku.com)证实,请读者仅作参考,并请自行核实相关内容。若本文有侵犯到您的版权, 请你提供相关证明及申请并与我们联系(qiyeku # qq.com)或【在线投诉】,我们审核后将会尽快处理。
—— 相关资讯 ——