2015-10-05 41 views
0

我在控制面板上有一些控件,我試圖用「刪除」按鈕刪除它們。我處理了How to get Keypress event in Windows Panel control in C# 中提到的KeyPress事件,並且我按下了按鈕(A-Z和1-9)的事件,但沒有按下Delete,Control/Alt/Shift或F1,F2 ....按鈕。在Windows面板控件中獲取刪除按鍵事件

我們是否需要爲處理這些按鈕做些特別的事情?

+0

只有具有*對焦*得到擊鍵控制。 Panel不喜歡重點關注。它沒有顯示它具有焦點並且不能對其進行選擇,請注意它沒有TabIndex屬性。它是一個容器控件,面板內部的任何東西都成爲焦點。爲什麼你想這樣做完全不清楚。不要使用Panel。 –

+0

@Hans,我使用Panel來繪製一些控件。所以基本上發生的是用戶可以使用鼠標點擊來繪製任何形狀(矩形,三角形等)。現在我想要的是用戶可以使用「刪除」按鈕刪除任何選定的形狀。類似Power Point的幻燈片和I用戶面板作爲形狀的容器。 – Pankaj

回答

2

嘗試這樣的:

private void Window_KeyDown(object sender, KeyEventArgs e) 
{ 
    if (e.KeyCode == Keys.Delete) 
    { 
     e.Handled = true; 
    } 
} 

還需要設置KeyPreview上。

您也可以參考Keyboard.Modifiers Property

+0

@Pankaj,['KeyDown'](https://msdn.microsoft.com/en-us/library/system.windows.forms.control.keydown.aspx)(閱讀相應的mdsn頁面以獲取重要細節)是第一個事件提及,但有時你可能需要'KeyUp' – Sinatr

+0

@Rahul Tripathi,謝謝。它正在工作。我從這裏得到更多的解釋http://stackoverflow.com/questions/8188328/c-sharp-keypress-doesnt-capture-delete-key。 – Pankaj