C#中子界面按钮改变父界面属性的一种简单方法
昨天师妹问了我一个问题,说想做一个小程序,在一个主界面使用按钮创建一个子界面显示同时隐藏自己,在子界面的一个按钮可以改变主界面的显示属性(Visible)使主界面显示,然后销毁自己。
一开始我想到了使用线程及委托进行界面传值,因为以前用过,但是后来觉得这样做有点复杂,又线程又委托的,总觉得还有更简单的方式,所以就一直尝试,想了N种办法,最终根据别人的提供的思路,找到了最简单的方式。
这种方法不用创建线程不使用委托,也不用在构造函数里做手脚,直接就调用即可,代码量及其少,而且还不用增加额外开销,个人觉得不错。
//Form1代码:
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void btn_CreateForm2_Click(object sender, EventArgs e)
{
this.Visible = false;
Form2 myform2 = new Form2();
myform2.Owner = this;
myform2.ShowDialog();
}
}
//Form2代码:
public partial class Form2 : Form
{
public Form2()
{
InitializeComponent();
}
private void btn_DispForm1_Click(object sender, EventArgs e)
{
Form1 myform1 = (Form1)this.Owner;
myform1.Visible = true;
this.Close();
}
}
//End...
以上代码经试验可行。
以下摘自博客园的一篇关于父窗口与子窗口传值的几种方法,可供需要的人参考:
父窗体给子窗体传值案例
==================
1.点击Form1的button1 打开Form2
父窗体给子窗体传值 可以调用重载子窗体的构造函数 直接传入相关数值
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
Form2 frm2 = new Form2(this.textBox1.Text);
frm2.Show();
}
}
public partial class Form2 : Form
{
public Form2()
{
InitializeComponent();
}
public Form2(string strTextBox1Text)
{
InitializeComponent();
this.textBox2.Text = strTextBox1Text;
}
}
2.点击Form1的button1 打开Form2
并调用子窗体Form2的公开属性或方法 将Form1的textBox1的值设置给Form2的textBox2
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
Form2 frm2 = new Form2();
frm2.TextBox2Text = this.textBox1.Text;
frm2.Show();
}
}
public partial class Form2 : Form
{
public Form2()
{
InitializeComponent();
}
public string TextBox2Text
{
set { this.textBox2.Text = value; }
get { return this.textBox2.Text; }
}
}
3.点击Form1的button1 打开Form2
在Form2_Load调用父窗体Form1的公开属性或方法 将Form1的textBox1的值设置给Form2的textBox2
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
public string TextBox1Text
{
set { this.textBox1.Text = value; }
get { return this.textBox1.Text; }
}
private void button1_Click(object sender, EventArgs e)
{
Form2 frm2 = new Form2();
frm2.Show(this);//或 frm2.ShowDialog(this);
////或者
//Form2 frm2 = new Form2();
//frm2.Owner = this;
//frm2.Show();//或 frm2.ShowDialog();
}
&
补充:软件开发 , C# ,