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

2025-02-26 04:24:30
推荐回答(5个)
回答1:

你的逻辑错了
首先,load事件本身就是窗口打开后首触发的事件,无论load事件里面的程序有没有执行都不影响窗口打开的效果,除非关闭窗口。
终止事件的可用return;然后this.close();就可以了。
但不建议在load事件判断是否打开窗体。
你可以把判断事件写在一个方法里,例如:
public void load()
{
if(ture)//满足条件
{form.show();}
else
return;
}
然后在 public Form1()
{
InitializeComponent();
//此处调用方法load()
load();
}

回答2:

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());
  }
}

回答3:

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


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

form1.cs

...
    Form2 fm2=new Form2();
    if (fm2.条件==True)
        fm2.Show();
...

回答4:

执行this.close();不会打开。你可以新建一个项目试试。

回答5:

你试过用return吗?
只是我的猜想!