我有一个winforms应用程序,在我的代码的一部分中,我有一条事件,在该事件中可以触发两个事件,如下所示:
Event 1
|
|--> if Event2 != null -> Event 2
|--> if Event3 != null -> Event 3
但在Event 1
中,当条件为true
时,我有一个返回的if,但我的问题是,我不想激发Event 2
或Event 3
,我该怎么做?
更新:
我的问题是,即使有Method1
的return;
,Event2
和/或Event3
仍在触发
我可以显示一些伪代码:
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());
}
更新2:我会更好地解释这一点:这是一个具有textfield
和button
的控件,当按下按钮时,Event1
被触发,并且在Event1
的代码内是对Event2
和Event3
的两个调用。当按下按钮时,会显示一个列表,以加载用户在文本字段中选择的内容。Event1
是表示按下按钮的事件,Event2
是表示用户在列表中选择的字段已加载到文本字段中的事件,而Event3
是当文本字段发生更改时(当用户更改其在列表中的选择时)触发的事件。这就是为什么Event2
和Event3
在Event1
内部希望能帮助大家了解工作流程。
试试这样的
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;
}