c# 模式对话框和非模式对话框
在一个Windows应用程序中,以模式对话框显示窗体f的命令是f.ShowDialog(owner);以非模式对话框显示的命令是f.Show(owner);问题是:如何在...
在一个Windows应用程序中,以模式对话框显示窗体f的命令是f.ShowDialog(owner);
以非模式对话框显示的命令是 f.Show(owner);
问题是:
如何在两者之间转换呢?
我尝试了 如果第一次是非模式的,那么第二次使用这样的方法可以转换成功:
f.Visible=false;
f.ShowDialog(owner);
但是,反过来转换,则有时候成功,有时候不成功,不知道有什么好的办法没有?
f.Visible=false;
f.Show(ownerr);
结果转换以后仍然会锁定owner窗体,似乎仍然是模式对话框。
namespace FormModeTest
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
Form2 f = new Form2();
f.ShowDialog(this);
}
}
}
而在Form2中,
private void button1_Click(object sender, EventArgs e)
{
this.Visible = false;
this.Show(this.Owner);
}
执行的结果,Form2 的Owner仍然被锁定。大家有没有什么办法解决呢?
反复试验以后,得出的结论是:
用Show替代,避开ShowDialog来实现这种锁定关系。
当当前窗体需要实现类似于ShowDialog的对Owner锁定时,执行:this.Owner.Enabled=false;
如果不需要锁定Owner,则可以执行:this.Owner.Enabled=true;
使用ShowDialog的模式对话框很不容易操作的,而使用Show则容易的多。 展开
以非模式对话框显示的命令是 f.Show(owner);
问题是:
如何在两者之间转换呢?
我尝试了 如果第一次是非模式的,那么第二次使用这样的方法可以转换成功:
f.Visible=false;
f.ShowDialog(owner);
但是,反过来转换,则有时候成功,有时候不成功,不知道有什么好的办法没有?
f.Visible=false;
f.Show(ownerr);
结果转换以后仍然会锁定owner窗体,似乎仍然是模式对话框。
namespace FormModeTest
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
Form2 f = new Form2();
f.ShowDialog(this);
}
}
}
而在Form2中,
private void button1_Click(object sender, EventArgs e)
{
this.Visible = false;
this.Show(this.Owner);
}
执行的结果,Form2 的Owner仍然被锁定。大家有没有什么办法解决呢?
反复试验以后,得出的结论是:
用Show替代,避开ShowDialog来实现这种锁定关系。
当当前窗体需要实现类似于ShowDialog的对Owner锁定时,执行:this.Owner.Enabled=false;
如果不需要锁定Owner,则可以执行:this.Owner.Enabled=true;
使用ShowDialog的模式对话框很不容易操作的,而使用Show则容易的多。 展开
3个回答
展开全部
而在Form2中,
private void button1_Click(object sender, EventArgs e)
{
this.Visible = false;
this.Show(this.Owner);
}
改为:
private void button1_Click(object sender, EventArgs e)
{
//this.Visible = false;
//this.Show(this.Owner);
this.Hide();
}
private void button1_Click(object sender, EventArgs e)
{
this.Visible = false;
this.Show(this.Owner);
}
改为:
private void button1_Click(object sender, EventArgs e)
{
//this.Visible = false;
//this.Show(this.Owner);
this.Hide();
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
关注。。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询