2013-03-12 164 views
0

我有一个事件会触发6次,我希望我的弹出窗口只出现一次而不是6次。我试图使用一个标志,但我不能从同一个事件重置它。我试图比较价值,但没有奏效,因为我一直都有同样的结果。有任何想法吗 ?事件多次触发,但代码只能执行一次

+1

请显示一些代码!你是否多次添加事件处理程序? – 2013-03-12 11:09:51

+0

你正在尝试处理什么样的事件?如果事件继续发生,为什么只需要通知用户一次? – 2013-03-12 11:16:36

回答

2

我认为这是一个单线程的winforms应用程序:您可以使用静态布尔变量'EventReceived',在显示弹出窗口后,您在第一个事件中设置为true;只要'EventReceived'为true,不要再显示弹出窗口;如果弹出窗口关闭,则将'EventReceived'设置回false。

当然,问题是,为什么你多次收到这个事件。也许你可以避免这种情况或以不同的方式处理它 - 但是你必须向我们提供更多信息。

+0

不幸的不是因为它从外部应用程序触发,收到的事件你有没有例子?预先感谢你 – 2013-03-12 11:13:19

+0

在你的Windows窗体中,某处放置了一个名为EventReceived的公共静态布尔值。在您的事件处理程序中,如果EventReceived == false,则显示popup并将EventReceived设置为true。如果弹出窗口关闭,请将EventReceived设置为false。 – 2013-03-12 11:16:12

1

尝试使用静态标志变量。然后,您可以重置来自同一事件的标志。在应用程序第一次执行onEvent代码段时,您需要标记该标志。 在inEvent代码段中,您可以包含您的操作,并且在到达该部分代码之前,您必须检查您的标志。 (通过if子句)。 如果您需要在6次后重置您的旗帜,您可以保留一个计数器变量,并通过计数器值计算您所处的发射周期。当计数器达到6时,您可以重置您的旗帜变量。