Обработка KeyDown для Label и PictureBox - PullRequest
2 голосов
/ 21 августа 2011

Я использую PictureBox для размещения и перемещения (перемещения) некоторого изображения в Главной диалоговой форме. Я хочу, чтобы была возможность удалить изображение на нажатой клавише Delete. Я не могу найти события обработки клавиатуры для перечисленных элементов управления.

Ну, я могу использовать KeyDown для формы и проверить, сфокусирован ли PictureBox, но выглядит он ужасно.

Может видеть, что у него есть событие http://msdn.microsoft.com/en-us/library/system.windows.forms.picturebox.keydown.aspx

Но на самом деле не ...

Есть идеи?

Ответы [ 2 ]

3 голосов
/ 21 августа 2011

Это не очень тонкий намек на то, что ни один из этих элементов управления не может получить фокус. События клавиатуры генерируются только для элементов управления, которые могут быть сфокусированы. TextBox - лучший пример, но многие другие делают. У них есть способ указать фокус пользователю, как правило, с помощью пунктирного прямоугольника, цвета или каретки.

Но не PictureBox и не Label, вы можете нажимать на них сколько угодно, но они не будут фокусироваться и не будут отображать это. Это просто маленькие человечки, которые соответственно показывают изображение или текст. Пользователь не ожидает от них ничего интересного.

Я не могу сказать, какое фокусное поведение вы хотите им дать, но пример превращения не фокусируемого элемента управления в фокусируемый приведен в этом ответе .

1 голос
/ 21 августа 2011

Так как окно рисунка не получит фокус, посмотрите на форму и посмотрите, где будет фокус (или возможно), когда пользователь нажмет кнопку Удалить.

Определите, какие элементы управления в форме выхотел бы, чтобы клавиша удаления работала с (кнопки, флажки и т. д., но, возможно, не с текстовыми полями), и используйте событие keydown в этих элементах управления, чтобы предпринять соответствующее действие.не всегда работает так, как вы ожидаете, поэтому лучше использовать событие keydown в отдельных элементах управления формы.

...