我有2个表格
Form1中
窗体2
我在Form1中有一个button
private void button1_Click(object sender, EventArgs e) { Form2 f2 =new Form2(); f2.ShowDialog(); f2.Dispose(); }
但是问题是开放的forms,它是bliking和diasparing
我试图使用show()也没有解决问题
如果我没有使用Disposed方法,那么第一次运行它的formsapibe和消失,但第二次的时间通过点击button它工作正常…
在Form2_Load事件中,我正在使用这两个属性
private void Form2_Load(object sender, EventArgs e) { this.RightToLeft = RightToLeft.Yes; this.RightToLeftLayout = true; }
加载时不要更改表单布局。 在启动之前更改它。 从Form2_Load
删除代码,并将其放在button1_Click
:
private void button1_Click(object sender, EventArgs e) { Form2 f2 =new Form2(); f2.RightToLeft = RightToLeft.Yes; f2.RightToLeftLayout = true; f2.ShowDialog(); }
我猜你想要显示并关闭 form2
使用相同的按钮。 我怀疑你最初的问题描述
“问题是开放的形式,它是bliking和diasparing”
我认为form2
在打开时不是“闪烁”,而是在“ form1
再次单击按钮时“闪烁”
ShowDialog()
会在你调用它之后退出你的执行。 也就是说,点击按钮后会退出执行。
因此,您应该在按钮单击事件中使用条件语句来尝试Show()
在form1.cs中
bool flag = false; Form2 frm2; private void button1_Click(object sender, EventArgs e) { if (flag == false) { frm2 = new Form2(); frm2.Show(); frm2.Load += new EventHandler(frm2_Load); frm2.FormClosed += new FormClosedEventHandler(frm2_FormClosed); flag = true; } else { frm2.Close(); flag = false; } } void frm2_Load(object sender, EventArgs e) { //set what ever properties you like } void frm2_FormClosed(object sender, FormClosedEventArgs e) { flag = false; }
另请参阅: 对话框将禁用程序显示的所有窗口
删除此属性
this.RightToLeft = RightToLeft.Yes;
并运行你的表单…
尝试这个 :
private void button1_Click(object sender, EventArgs e) { using(Form2 f2 =new Form2()) { f2.ShowDialog(); } }