2013-03-12 179 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時,您可以重置您的旗幟變量。