我有一个C#应用程序,我试图阻止窗体显示在构造函数中。如何防止窗体出现在构造函数中?
我启动的形式是这样的:
Form1 f = new Form1();
f.ShowDialog();
我有什么在构造这样做f.ShowDialog不应该启动并继续执行代码。
我有一个C#应用程序,我试图阻止窗体显示在构造函数中。如何防止窗体出现在构造函数中?
我启动的形式是这样的:
Form1 f = new Form1();
f.ShowDialog();
我有什么在构造这样做f.ShowDialog不应该启动并继续执行代码。
不能添加在构造函数(在这个例子中ShowTheDialog
)公共属性f
,并设置为true
如果你想叫f.ShowDialog
Form1 f = new Form1();
if(f.ShowTheDialog) {
f.ShowDialog();
}
(我没有窗户形式的专家,但)无法您在构造函数中设置一个标志,是否可以显示或不显示的形式,然后覆盖在onload()方法,如果你的标志是假的,马上躲形式,例如:
private bool _canShow = true;
public Form1()
{
_canShow = ...;
}
protected override OnLoad(EventArgs e)
{
if (!_canShow) Close();
base.OnLoad(e);
}
我认为Pentium10想成为abl e通过构造函数指定ShowDialog在以后是否允许实际显示对话框。换句话说,他确实希望能够重写ShowDialog,这样在他自己的ShowDialog中,他可以检查这个魔法权限变量并保存或调用基本ShowDialog。
我不确定这是否在技术上是正确的,但它似乎工作。 Pentium10在你的Window类中创建了另一个名为ShowDialog的公共方法,它隐藏了继承的ShowDialog。然后里面,检查您的变量,只有当它是允许的,调用基的ShowDialog方法,像这样:
public partial class Window3 : Window
{
bool _allowed { get; set; }
public Window3(bool allowed)
{
_allowed = allowed;
InitializeComponent();
}
public void ShowDialog()
{
if(!_allowed)
return;
else
base.ShowDialog();
}
}
这样的事情可能会奏效,但我认为这是一种代码味道。名为'ShowDialog'的方法应该显示一个对话框,而不是简单地不做任何事情,特别是如果这是整个框架期望的行为。 – 2010-02-21 23:09:41
同意。我只是提供了他想要的确切解决方案,尽管它可能处理得最好。 – Dave 2010-02-21 23:11:06
是的,我认为原来的问题听起来有点像代码味道(我们知道的信息很少)。 – 2010-02-21 23:12:45
如何在构造函数本身是否需要调用的ShowDialog上显示?
然后你只需要做:
Form1 f = new Form1();
如何不调用'f.ShowDialog()'?或者,你可以在构造函数中抛出异常。 – 2010-02-21 22:49:40
否则不可能?如果我允许显示,我只能在构造函数中决定。 – Pentium10 2010-02-21 22:50:52