马头琴演奏的草原歌曲:在C#中如何在窗体间访问其他窗体中的成员呢

来源:百度文库 编辑:中财网 时间:2024/03/28 22:33:09

经常在百度知道里面看到有朋友问这个问题.也经常打字回答.现在懒了.写这篇文章希望能一劳永逸.

环境:VS2005(.NET2.0)+WindowsXp     WinForm开发

在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 = "你是猪!!!";
        }