C # Winform Alter Отправлено нажатие клавиши - PullRequest
1 голос
/ 13 июня 2009

Привет, у меня есть приложение C # winform с определенной формой, заполненной несколькими текстовыми полями. Я хотел бы сделать так, чтобы при нажатии клавиши со стрелкой вправо это имитировало бы то же поведение, что и нажатие клавиши табуляции. Я не совсем уверен, как это сделать.

Я вообще не хочу менять поведение клавиши табуляции, просто нажмите правую клавишу со стрелкой, чтобы сделать то же самое, пока находитесь в этой форме.

Может кто-нибудь предложить какие-либо предложения?

Ответы [ 3 ]

2 голосов
/ 13 июня 2009

Вы должны переопределить метод OnKeyUp в своей форме, чтобы сделать это ...

protected override void OnKeyUp(KeyEventArgs e)
{
    if (e.KeyCode == Keys.Right)
    {
       Control activeControl = this.ActiveControl;

       if(activeControl == null)
       {
            activeControl = this;
       }

       this.SelectNextControl(activeControl, true, true, true, true);
       e.Handled = true;
    }

    base.OnKeyUp(e);
}
0 голосов
/ 13 июня 2009

Вы можете использовать событие KeyDown в форме, чтобы перехватить нажатие клавиши и затем выполнить любое действие, которое вы хотите. Например:

 private void MyForm_KeyDown(object sender, KeyEventArgs e)
 {
     if(e.KeyCode == Keys.Right)
     {
         this.SelectNextControl(....);
         e.Handled = true;
     }
 }

Не забудьте установить для свойства KeyPreview формы значение True.

0 голосов
/ 13 июня 2009

Я думаю, что это выполнит то, что вы просите:

private void form1_KeyDown(object sender, KeyEventArgs e)
{
    if (e.KeyCode == Keys.Right)
    {
        Control activeControl = form1.ActiveControl;
        // may need to check for null activeControl
        form1.SelectNextControl(activeControl, true, true, true, true);
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...