C# Winform изменяет отправленное нажатие клавиши

Единственная опасность объявления чего-либо в прямом направлении - это когда вы делаете предварительное объявление вне заголовка или в не разделяемом заголовке, и подпись прямого объявления отличается от фактической подписи того, что было объявлено заранее. Если вы сделаете это в extern "C", не будет никакого искажения имени для проверки подписи во время ссылки, поэтому вы можете столкнуться с неопределенным поведением, когда подписи не совпадают.

1
задан AstroCB 24 August 2014 в 03:56
поделиться

3 ответа

Для этого вы должны переопределить метод 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);
}
2
ответ дан 3 September 2019 в 01:26
поделиться

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

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

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

0
ответ дан 3 September 2019 в 01:26
поделиться

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

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);
    }
}
0
ответ дан 3 September 2019 в 01:26
поделиться
Другие вопросы по тегам:

Похожие вопросы: