EventArgs e){textBox1.Text = username;textBox2.Text = passw

时间:2021-12-14 09:20:41

窗体传值是在学习窗体应用措施时碰到的一类对照常见的问题,现将窗体传值要领做了一点总结,要领如下:

<1>声明全局变量传值:

在Form1中声明全局变量,如下所示:

1 public static string str = "窗体1的值";

通过Form1的button1_Click事件即可将此全局变量通报给Form2,Form1的全局变量str在Form2中可以直接访谒,代码如下所示:

1 private void button1_Click(object sender, EventArgs e) 2 { 3 Form2 frm2 = new Form2(); 4 frm2.Show(); 5 }

1 private void Form2_Load(object sender, EventArgs e) 2 { 3 this.label1.Text = Form1.str; 4 }

<2>通过结构函数传值:

重载Form2的结构函数,使其能够接受一个来自Form1的参数,重载代码如下所示:

private string str; public Form2(string s) { InitializeComponent(); this.str = s; }

上面代码中界说的string变量str用来存储从Form1通报进来的参数。

在Form1的button1_Click事件中实例化Form2并给其通报Form1的一个参数,代码如下所示:

private void button1_Click(object sender, EventArgs e) { string s = this.textBox1.Text; Form2 frm2 = new Form2(s); frm2.Show(); }

在Form2的Form2_Load中即可接受这个参数,接受这个参数值的代码如下所示:

private void Form2_Load(object sender, EventArgs e) { this.label1.Text = str; }

这样,,在单击Form1的button1之后,Form2便会蹦出来,Form2的label1便会显示这个从Form1传进来的值。

<3>在窗体中声明大众属性进行传值:

在Form2中声明大众属性,代码如下所示:

private string username; public string Username { get { return username; } set { username = value; } } private string password; public string Password { get { return password; } set { password = value; } }

这样,在Form1中即可访谒这些属性,也就可以将Form2中这些大众属性的值通报给Form1了,并且也可以从Form1中向Form2的这些大众属性传值。代码如下所示:

(1)Form1向Form2传值:

private void button1_Click(object sender, EventArgs e) { Form2 frm2 = new Form2(); frm2.Username = "Jack"; //Form1向Form2传值 frm2.Password = "J1234";
       frm2.Show();  }

private void Form2_Load(object sender, EventArgs e) { textBox1.Text = username; textBox2.Text = password; }

(2)Form2向Form1传值:

private void textBox1_TextChanged(object sender, EventArgs e) { this.Username = textBox1.Text; } private void textBox2_TextChanged(object sender, EventArgs e) { this.Password = textBox1.Text; }

private void button1_Click(object sender, EventArgs e) { Form2 frm2 = new Form2(); frm2.Username = "Jack"; //Form1向Form2传值 frm2.Password = "J1234"; comboBox1.Items.Add(frm2.Username); //Form2向Form1传值 comboBox1.Items.Add(frm2.Password); frm2.Show(); }

声明大众属性传值对照灵活,受限较少,因此对照好用。但是或许这会影响数据的安适性哦。

<4>通报整个窗体进行传值。

类似于结构函数传值,将窗体作为结构函数的参数即可通报整个窗体了。代码如下所示:

private void button1_Click(object sender, EventArgs e) { Form2 f2 = new Form2(this); f2.Show(); }