你的逻辑错了
首先,load事件本身就是窗口打开后首触发的事件,无论load事件里面的程序有没有执行都不影响窗口打开的效果,除非关闭窗口。
终止事件的可用return;然后this.close();就可以了。
但不建议在load事件判断是否打开窗体。
你可以把判断事件写在一个方法里,例如:
public void load()
{
if(ture)//满足条件
{form.show();}
else
return;
}
然后在 public Form1()
{
InitializeComponent();
//此处调用方法load()
load();
}
using System;
using System.Windows.Forms;
class Form1 : Form
{
Form1()
{
Text = "No Load";
}
protected override void OnLoad(EventArgs e)
{
base.OnLoad(e);
if (Text != "Load") // 如果窗口标题不是"Load"则退出
{
MessageBox.Show("Closing..."); // 去掉这行后将静悄悄地退出。
Close();
}
}
[STAThread]
static void Main()
{
Application.Run(new Form1());
}
}
你的逻辑不恰当,更好的处理方式是,在窗口Show()之前先判断条件是否满足,如果满足则显示,否则根本不打开,如果你要判断的值是在打开的目标窗口上,则可以将其公布为当前窗体类的属性,指定可合适的访问修饰符internal或public,这样创建完实例后判断条件,再决定是否show()
例:Form1()主窗体,Form2()按条件决定是否显示的窗体
form1.cs
...
Form2 fm2=new Form2();
if (fm2.条件==True)
fm2.Show();
...
执行this.close();不会打开。你可以新建一个项目试试。
你试过用return吗?
只是我的猜想!