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则容易的多。
展开
 我来答
火沙
2010-01-27 · TA获得超过954个赞
知道小有建树答主
回答量:478
采纳率:0%
帮助的人:398万
展开全部
这样估计不行,ShowDialog后button1_Click没有执行完,等侍f关闭后再执行后面的代码,如果这样能转换的话,ShowDialog后面的代码何时执行呢?

先关了再开吧,把画面信息存一下!这样虽然麻烦了点。但还是可以实现的
枯牛
2010-01-27 · 超过14用户采纳过TA的回答
知道答主
回答量:129
采纳率:0%
帮助的人:32.2万
展开全部
而在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();
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友e3cca09
2010-01-27 · TA获得超过225个赞
知道答主
回答量:99
采纳率:0%
帮助的人:0
展开全部
关注。。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式