跨窗体操作
Posted 失恋副作用
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了跨窗体操作相关的知识,希望对你有一定的参考价值。
Users uuu = new UsersData().SelectUser(uname, pwd); 跨窗体操作的时候,如果点开第二个窗体那么第一个窗体就要关闭,但是,一旦关闭第一个窗体那么第二个也会关闭,因为主窗体一关,其余的子窗体都会随着关闭,所以,要使用控件额属性,进行隐藏例如: Form2 f2 = new Form2(); f2.Show(); this.Visible = false; 在第二个通过第二个窗体来操控第一个窗体 Form1 F1 = null; public Form2(Form1 f1) { InitializeComponent(); F1 = f1; label1.Text = u.NickName + ",欢迎你!"; F5(); } 第二个窗体的触发事件 private void Form2_FormClosing(object sender, FormClosingEventArgs e) { F1.Close(); 注意:不能写f1,因为作用域的问题,所以需要先定义一个F,然后让F=f,这样用F就可以了 } 最后还要在这里加参数this Form2 f2 = new Form2(this); f2.Show(); this.Visible = false; 因为要显示第二个窗体的xxx欢迎你,所以需要在构造函数的时候传进一个Users类的参数u,并且,不是u.UserName,而是昵称,注意用label1.Text 接收一下 Form1 F1 = null; public Form2(Form1 f1, Users u) { InitializeComponent(); F1 = f1; label1.Text = u.NickName + ",欢迎你!"; F5(); } 那么第一个窗体那里就不能是一个参数了,还应该有个 Form2 f2 = new Form2(this, uuu); f2.Show(); this.Visible = false; 实例化出窗体三 private void button1_Click(object sender, EventArgs e) { Form3 f3 = new Form3(this); 注意这里的this f3.Show(); } public partial class Form3 : Form { Form2 F2 = null; public Form3(Form2 f2) { InitializeComponent(); F2 = f2; } private void textBox1_TextChanged(object sender, EventArgs e) { string s = textBox1.Text; F2.label2.Text = s; }
Users uuu = new UsersData().SelectUser(uname, pwd); 跨窗体操作的时候,如果点开第二个窗体那么第一个窗体就要关闭,但是,一旦关闭第一个窗体那么第二个也会关闭,因为主窗体一关,其余的子窗体都会随着关闭,所以,要使用控件额属性,进行隐藏例如: Form2 f2 = new Form2(); f2.Show(); this.Visible = false; Visible:确定该控件是显示的还是隐藏的(在属性的行为里) 这时如果关闭第二个的话,那么第一个并没有关闭,那样是无法关闭的,那么就应该在第二个通过第二个窗体来操控第一个窗体,那么就需要(用到属性行为里的fromclosing),在第二个窗体的构造函数里传入第一个窗体的类名和参数, Form1 F1 = null; public Form2(Form1 f1) { InitializeComponent(); F1 = f1; label1.Text = u.NickName + ",欢迎你!"; F5(); } 然后再在第二个窗体的触发事件里双击点fromclosing, private void Form2_FormClosing(object sender, FormClosingEventArgs e) { F1.Close(); 注意:不能写f1,因为作用域的问题,所以需要先定义一个F,然后让F=f,这样用F就可以了 } 然后写F1.Close();就是在关闭第二个窗体前就关闭第一个窗体, 最后还要在这里加参数this,这个this代表的是第一个窗体,在哪个里写就代表哪个,下面这一步是在第一个窗体里写的,因为是点击第一个窗体要开启第二个窗体,所以实例化出第二个窗体: Form2 f2 = new Form2(this); f2.Show(); this.Visible = false; 因为要显示第二个窗体的xxx欢迎你,所以需要在构造函数的时候传进一个Users类的参数u,并且,不是u.UserName,而是昵称,注意用label1.Text 接收一下 Form1 F1 = null; public Form2(Form1 f1, Users u) { InitializeComponent(); F1 = f1; label1.Text = u.NickName + ",欢迎你!"; F5(); } 那么第一个窗体那里就不能是一个参数了,还应该有个 Form2 f2 = new Form2(this, uuu); f2.Show(); this.Visible = false; 点击第二个窗体,打开第三个窗体,并且使第二个窗体的label1.Text随着第三个窗体的combobox.Text的变化而实时变化 首先在第二个窗体的按钮里写点击事件,实例化出窗体三 private void button1_Click(object sender, EventArgs e) { Form3 f3 = new Form3(this); f3.Show(); } 然后在窗体三的文本框里找到textbox1.Textchanged, public partial class Form3 : Form { Form2 F2 = null; public Form3(Form2 f2) { InitializeComponent(); F2 = f2; } private void textBox1_TextChanged(object sender, EventArgs e) { string s = textBox1.Text; F2.label2.Text = s; }
以上是关于跨窗体操作的主要内容,如果未能解决你的问题,请参考以下文章