Мой e.keyCode == Ключи.Add — это запись в текстовое поле, сфокусированное

#c#

#c#

Вопрос:

У меня есть этот код в Windows form, который вызывает функцию, которая вычисляет число:

 private void KeyDown_Accion_Teclas(object sender, KeyEventArgs e)
{    
    if (e.KeyCode == Keys.Add || e.KeyCode == Keys.Oemplus)
    {
        cmdAlta_Click(sender, e);
    }
}
  

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

Я только хочу вызвать функцию, но не писать символ. Ничего из того, что я пробовал, не сработало.

Есть идеи?

Комментарии:

1. Не могли бы вы, пожалуйста, указать более подробную информацию о коде? Например, вам нужно показать обработчик события, внутри которого записан приведенный выше оператор if. Это поможет авторам помочь вам с вашими проблемами.

2. Привет, Ятин, конечно, в форме обработчиком события является этот код: this.KeyDown = new System.Windows.Forms.KeyEventHandler(this.KeyDown_Accion_Teclas);

3. Попробуйте добавить: e.SuppressKeyPress = true; e.Handled = true; в качестве первых двух строк в вашем if блоке (предполагая, что это в KeyPress случае TextBox элемента управления)

4. Смотрите здесь документацию о том, как обрабатывать ключевые события на уровне формы: learn.microsoft.com/en-us/dotnet/framework/winforms /… . Обратите внимание на подробно описанные там сведения о том, как это правильно настроить…

Ответ №1:

 private void KeyDown_Accion_Teclas(object sender, KeyEventArgs e)
{    
    if (e.KeyCode == Keys.Add || e.KeyCode == Keys.Oemplus)
    {            
        cmdAlta_Click(sender, e);
        e.SuppressKeyPress = true;
    }
}
  

Или, может быть:

 private void KeyDown_Accion_Teclas(object sender, KeyEventArgs e)
{    
    if (e.KeyCode == Keys.Add || e.KeyCode == Keys.Oemplus)
    {            
        e.SuppressKeyPress = true;
        cmdAlta_Click(sender, null);
    }
}