c#在winform的load事件中如何取消后续执行

在一个winform的load事件中,做了一些判断,当判断的结果是条件无法满足时,想终止load事件的后续执行,即不再打开该窗口,如何执行?我现在执行了this.clos... 在一个winform的load事件中,做了一些判断,当判断的结果是条件无法满足时,想终止load事件的后续执行,即不再打开该窗口,如何执行?我现在执行了this.close(),但窗口还是打开了。 展开
 我来答
luzhongxiangn
2014-04-28
知道答主
回答量:26
采纳率:0%
帮助的人:14万
展开全部
你的逻辑错了
首先,load事件本身就是窗口打开后首触发的事件,无论load事件里面的程序有没有执行都不影响窗口打开的效果,除非关闭窗口。
终止事件的可用return;然后this.close();就可以了。
但不建议在load事件判断是否打开窗体。
你可以把判断事件写在一个方法里,例如:
public void load()
{
if(ture)//满足条件
{form.show();}
else
return;
}
然后在 public Form1()
{
InitializeComponent();
//此处调用方法load()
load();
}
百度网友a5eb3e1
2014-04-27 · TA获得超过4448个赞
知道大有可为答主
回答量:3486
采纳率:60%
帮助的人:2634万
展开全部
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());
  }
}
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
学派
2014-04-27 · TA获得超过446个赞
知道小有建树答主
回答量:465
采纳率:100%
帮助的人:256万
展开全部

你的逻辑不恰当,更好的处理方式是,在窗口Show()之前先判断条件是否满足,如果满足则显示,否则根本不打开,如果你要判断的值是在打开的目标窗口上,则可以将其公布为当前窗体类的属性,指定可合适的访问修饰符internal或public,这样创建完实例后判断条件,再决定是否show()


例:Form1()主窗体,Form2()按条件决定是否显示的窗体

form1.cs

...
    Form2 fm2=new Form2();
    if (fm2.条件==True)
        fm2.Show();
...
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友a1d4f2f
2014-04-27 · 超过102用户采纳过TA的回答
知道小有建树答主
回答量:241
采纳率:0%
帮助的人:192万
展开全部
执行this.close();不会打开。你可以新建一个项目试试。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
泷oxo
2014-04-27
知道答主
回答量:8
采纳率:0%
帮助的人:3万
展开全部
你试过用return吗?
只是我的猜想!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式