2015-12-26 42 views
-1

我「逼」從方法點擊一個按鈕與button_Click(null,null)如何button_click(NULL,NULL)和實際點擊用戶

區分在button_Click方法我想實際點擊一個區分強制點擊(button_Click(null,null))。

我想我可以用一個if語句來檢查if (sender.Equals(null)),但這只是猜測,並沒有奏效。對不起,如果這看起來像,請給我一個答案,但我還沒有發現任何類似的東西。

+0

你能給更多的上下文嗎?什麼導致button_Click(null,null)?無論如何,你爲什麼需要這樣做? 你的問題表明你正在做一件非常有趣的事情... – Squiggle

+1

什麼「沒有工作」?它應該工作,你什麼都不告訴我們。 –

+0

@Squiggle如果一個列表框項被點擊,它強制一個button_click(null,null) – mythic

回答

5

的常用方法處理這個問題甚至沒有嘗試處理它。

不要叫你的事件處理程序,當事件發生時除外。創建一個可重用的方法,它需要一個參數來指示您是否有實際的按鈕點擊。然後使用一個值從您的button_Click事件處理程序中調用它,並從具有另一個值的新方法中調用它。現在

private void button_Click(object sender, EventArgs e) { 
    HandleButtonClick(isRealClick: true); 
} 

private void SimulateButtonClick() { 
    HandleButtonClick(isRealClick: false); 
} 

private void HandleButtonClick(bool isRealClick) { 
    // ... 
} 

,而不是調用button_Click(null, null),叫SimulateButtonClick()

調用button_Click(null, null)的缺點是,它是不是在所有明顯給其他人閱讀你的代碼,您的通話不應該被更改爲button_Click(button, EventArgs.Empty)。這樣的改變會破壞你的代碼。如果可能的話,你應該編寫你的代碼,以便易於理解和維護。

1

因爲你是空傳遞給EventArgs的,只是檢查它是否爲空(它不會爲空,如果用戶實際點擊該按鈕/按下回車點擊等)

if(e == null) 
{ 
// Button was forced 
} 
+0

sender == null工作,而sender.equals(null)沒有。謝謝! – mythic

+1

@Erra - 不是從檢查'發件人== null' –

+0

@mythic要麼應該工作,因爲你正在傳遞空到兩個真正不同的,也不應爲空,如果按鈕被實際點擊。沒問題! – Erra