我有些困难,在非模态状态下显示一个禁用的表单。以下是示例代码:
public partial class Form1 : Form
{
// ....
private void button1_Click(object sender, EventArgs e)
{
try
{
Form2 form = new Form2();
form.Enabled = false;
form.Show(); // works, but form has no owner
// form.Show(this); // gives an System.InvalidOperationException
// ...
// ... my program here shows a message box, ask user for something
// ... while 'form' is shown in the background
form.Close();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
}
有没有想过为什么
Show()
(无参数)可以工作,但是 Show(this)
会抛出异常?在我的场景中,form
必须知道它的所有者才能正确显示,所以我可以这样做: form.Enabled = false;
form.Owner=this;
form.Show();
但这真的是一个好的解决方案吗?
编辑:感谢快速回答。看起来我们确实在框架中发现了一个错误。尽管您提出了建议,但我认为我会坚持我的解决方案,因为在“显示”后禁用表单会给用户带来不良的可见效果。