ShowDialog问题,同时打开表单

我有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(); } }