我有2个表格
Form1中
窗体2
我在Form1中有一个按钮
private void button1_Click(object sender, EventArgs e)
{
Form2 f2 =new Form2();
f2.ShowDialog();
f2.Dispose();
}
但问题是在打开形式的时候,它是昙花一现,而且是一种贬低的方式
我试过使用show()但是没有解决问题
如果我没有使用Disposed方法,那么第一次运行表格时它会显示并消失,但是通过点击按钮它可以在第二时间运行正常......
在Form2_Load事件中,我正在使用这两个属性
private void Form2_Load(object sender, EventArgs e)
{
this.RightToLeft = RightToLeft.Yes;
this.RightToLeftLayout = true;
}
答案 0 :(得分:1)
加载时不要更改表单布局。在启动之前更改它。从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();
}
答案 1 :(得分:1)
我猜你想使用相同的按钮显示和关闭 form2
。我怀疑你最初的问题描述
“问题是在打开形式的时候,这是一种昙花一现的想法”
我认为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;
}
另请参阅:A dialog disables all of the windows that your program displays
答案 2 :(得分:0)
删除此属性
this.RightToLeft = RightToLeft.Yes;
并运行您的表单......
答案 3 :(得分:0)
试试这个:
private void button1_Click(object sender, EventArgs e)
{
using(Form2 f2 =new Form2())
{
f2.ShowDialog();
}
}