У меня есть UserControl
, который имеет некоторые другие элементы управления, а затем Panel
, которые я использую для рисования пользовательских фигур на событиях мыши. Я хотел бы добавить некоторые другие функции, но для этого мне нужно было бы обнаружить KeyDown
и KeyUp
, пока мышь рисует фигуры на панели (в этой ситуации UserControl.KeyDown/KeyUp
никогда не срабатывает). Как это можно достичь?События KeyDown и KeyUp в пользовательском UserControl
EDIT
Вот минимальная версия для UserControl, где эта проблема может быть видно:
public partial class UserControl1 : UserControl
{
TextBox textBox1;
Panel panel1;
public UserControl1()
{
InitializeComponent();
textBox1 = new System.Windows.Forms.TextBox();
textBox1.Location = new System.Drawing.Point(0, 0);
this.Controls.Add(this.textBox1);
panel1 = new System.Windows.Forms.Panel();
panel1.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
panel1.Location = new System.Drawing.Point(0, 25);
panel1.Size = new System.Drawing.Size(300, 150);
panel1.MouseEnter += new System.EventHandler(this.panel1_MouseEnter);
this.Controls.Add(this.panel1);
this.Size = new System.Drawing.Size(300, 200);
this.KeyDown += UserControl1_KeyDown;
}
private void panel1_MouseEnter(object sender, EventArgs e)
{
panel1.Focus();
}
void UserControl1_KeyDown(object sender, KeyEventArgs e)
{
MessageBox.Show("Key down");
}
}
Когда этот элемент находится внутри формы никогда не отображается сообщение «Ключ вниз».
Нам нужно будет увидеть ваш код, иначе мы понятия не имеем, в чем проблема. Проверьте [ask] некоторые хорошие рекомендации. –
Вы можете найти ответы на [этот вопрос] (http://stackoverflow.com/q/1152784/622391). –
События клавиатуры активируются с помощью элемента управления, имеющего фокус. Это никогда не будет UserControl. Вы ошибаетесь, потому что вы не можете * видеть * фокус, это сильная проблема юзабилити пользовательского интерфейса. Проверьте [этот пост] (http://stackoverflow.com/a/3562449/17034). –