2012-05-30 60 views
0

我怎樣才能執行一個事件,而事實上並沒有發生?c# - 執行沒有發生的事件

例如,我將如何執行代碼中的button1_Click()事件,而不點擊按鈕?

問題是我有一個WebClient,它會下載文件列表。 每次完成下載文件時,它都會執行DownloadFileCompleted事件,然後下載下一個文件。

但是,有些文件沒有下載(全部在計劃中),所以事件沒有執行。我怎麼能執行它? 謝謝

+0

*請*在您的問題中使用段落,幾乎不可能讀取一段文字 – Shai

+0

您如何知道*何時執行事件? – dasblinkenlight

+0

我有一個文件URL-s的列表,其中有一個用於下載或不用的布爾值。然後在下載之前檢查。 – ItsGreg

回答

7

只需插入所有存在於一個單獨的函數事件處理程序代碼,像

private void button1_click(...) 
{ 
    func(...) 
} 


public void func(...) 
{ 
    //even handler code 
} 

,如果你做什麼引發一個事件,或者不能,只需撥打

func(...) 

我個人反對調用事件處理程序,但更喜歡這種方法。 對我來說似乎更清晰的代碼結構。

1

你可以給它提供空值,並像普通函數那樣調用它(畢竟,它是一個正常的函數,只需要一個發送者和適當的事件參數)。 例如

button_click(new object(), new System.EventArgs()); 

這些是標準GUI按鈕的正常事件,您的按鈕可能需要不同的事件。如果您只需要按鈕來檢測點擊並且不想使用事件參數,則此方法可行。

0

button1_Click()只是一種方法,所以即使將其綁定到事件,也可以執行它。

0

你應該將代碼移出你的事件處理程序並進入一個函數。

然後,您可以從事件和任何其他需要觸發它的方法調用此函數。

所以不是:

private void button1_Click() 
{ 
    //do something 
} 

您有:

private void button1_Click() 
{ 
    doSomething(); 
} 

public void doSomething() 
{ 
    //do something 
} 
0

如果你的按鈕的名稱是BUTTON1,您可以通過下面的代碼行提高點擊事件:

button1.PerformClick(); 

希望這會有所幫助!

編輯:

或者像其他人所說的,把你的邏輯在一個單獨的方法,並在需要時調用該方法。

相關問題