2017-10-11 89 views
0

我在我的KeyDown事件中編寫了一些代碼,我想從雙擊事件中執行該代碼。我可以將該代碼塊封裝爲一個函數,並在兩個事件中調用該函數,但我只是想用一種奇特的方式來避免創建一個新函數。這是我的兩個事件的樣子。c#調用DoubleClick事件中的KeyDown事件

private void txtProduct_KeyDown(object sender, KeyEventArgs e) 
{ 
    if(e.KeyCode == Keys.Return) 
    { 
     //do something 
    } 
} 

private void listProduct_DoubleClick(object sender, EventArgs e) 
{ 
    txtProduct_KeyDown(txtProduct, Keys.Return); 
} 

爲了從DoubleClick事件執行//do something塊,我需要調用keydown事件有兩個具體的參數。它是什麼?任何幫助?

回答

0

要通過KeyEventArgs你需要這個

txtProduct_KeyDown(txtProduct, new KeyEventArgs(Keys.Enter)); 

雖然它不這樣做的編碼習慣而言的最佳方式,你應該創建,它可完成DoSomething的你的函數,然後從調用它在世界上任何地方。

+0

謝謝,但是我知道。我只是不知道如何使keyEventArgs對象具有返回鍵的keyCode,然後將其傳遞給KeyDown事件。一個例子可能有幫助。 –

+0

@WahidMasud查看我的更新回答 –

3

不要去那裏。 總是將通用功能提取到其自己的方法中。嘗試花哨的東西,以避免創建一個新的方法只會導致你長期痛苦。

private void txtProduct_KeyDown(object sender, KeyEventArgs e) 
{ 
    if(e.KeyCode == Keys.Return) 
    { 
     DoSomething(); 
    } 
} 

private void listProduct_DoubleClick(object sender, EventArgs e) 
{ 
    DoSomething(); 
} 

private void DoSomething() 
{ 
    // Do Something 
} 

這是無痛,準確地表達你想要做什麼,即DoSomething都在名單DoubleClick和返回KEYDOWN。

+0

好的伴侶:) –