从winforms中的父事件中取消子事件层次结构?

时间:2015-03-24 14:52:14

标签: c# winforms events event-handling

我有一个winforms应用程序,在我的代码的一部分中,我有一个事件,在该事件内可以分解两个事件,如下所示:

Event 1
  |
  |--> if Event2 != null -> Event 2
  |--> if Event3 != null -> Event 3

但在Event 1中,如果条件为true,我会有一个返回,但我的问题是我不想解雇Event 2或{ {1}},我该怎么做?

更新

我的问题是即使使用Event 3 return;Method1和/或Event2仍在触发

我可以显示一些伪代码:

Event3

更新2 : 我会更好地解释一下: 这是一个具有private void event1(object sender, EventArgs e) { Method1(); } private void Method1() { if(condition) return; //more stuff } private void CodeForEvent1() { //some stuff... if(Event2 != null) Event2(this, new EventArgs()); if(Event3 !- null) Event3(this, new EventArgs()); } textfield的控件,当按下按钮时button被触发,Event1代码内的两个调用{{1} }和Event1。 按下按钮时,将显示一个列表以加载用户在文本字段中选择的内容。 Event2是表示按下按钮的事件,Event3表示用户在列表中选择的字段已加载到文本字段中,而Event1是表示该事件的事件文本字段更改时触发(当用户更改列表中的选择时)。 这就是Event2Event3Event2内的原因 希望有助于理解工作流程。

1 个答案:

答案 0 :(得分:0)

尝试这样的事情

private void event1(object sender, EventArgs e)
{
     if(Method1())
     {
      e.cancel;
      return;
     }
    else
    {
        if(Event2 != null)
     { Event2(this, new EventArgs());}
        if(Event3 != null)
     {Event3(this, new EventArgs());}
    }
}
private void event2(object sender, EventArgs e)
{
 // your stuff    
}
private void event3(object sender, EventArgs e)
{
    //your stuff
}
private bool Method1()
{
     if(Your_condition_is_Matched)
     {
       return true;

     }
  return false;
}