c#在winform的load事件中如何取消后续执行
在一个winform的load事件中,做了一些判断,当判断的结果是条件无法满足时,想终止load事件的后续执行,即不再打开该窗口,如何执行?我现在执行了this.clos...
在一个winform的load事件中,做了一些判断,当判断的结果是条件无法满足时,想终止load事件的后续执行,即不再打开该窗口,如何执行?我现在执行了this.close(),但窗口还是打开了。
展开
5个回答
展开全部
你的逻辑错了
首先,load事件本身就是窗口打开后首触发的事件,无论load事件里面的程序有没有执行都不影响窗口打开的效果,除非关闭窗口。
终止事件的可用return;然后this.close();就可以了。
但不建议在load事件判断是否打开窗体。
你可以把判断事件写在一个方法里,例如:
public void load()
{
if(ture)//满足条件
{form.show();}
else
return;
}
然后在 public Form1()
{
InitializeComponent();
//此处调用方法load()
load();
}
首先,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吗?
只是我的猜想!
只是我的猜想!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询