Как я получаю клавишу Enter в, окна формируют поле комбинированного списка

Какая разновидность? Поддержка Regex включена в большинство главных языков программирования, используемых сегодня, в редакторов и IDE, в инструментах командной строки как grep и findstr и много других мест. Каждые из этих инструментов/языков/приложений имеют его собственную regex разновидность, и никакие две разновидности не абсолютно подобны.

Для regex разновидности определенного языка программирования, я просто Google для "< language> тестер regex"; всегда, кажется, существует по крайней мере один доступный тестер онлайн.

15
задан Presidenten 4 August 2009 в 10:21
поделиться

6 ответов

Подключите событие KeyPress к такому методу:

protected void myCombo_OnKeyPress(object sender, KeyPressEventArgs e)
{
    if (e.KeyChar == 13)
    {
        MessageBox.Show("Enter pressed", "Attention");                
    }
}

Я тестировал это в приложении WinForms с VS2008, и он работает.

Если это не работает для вас, опубликуйте свой код.

19
ответ дан 1 December 2019 в 00:30
поделиться

Если вы определяете AcceptButton в своей форме, вы не можете прослушивать клавишу Enter в KeyDown / KeyUp / KeyPress.

Чтобы проверить это, вам необходимо переопределить ProcessCmdKey в FORM:

protected override bool ProcessCmdKey(ref Message msg, Keys keyData) {
    if ((this.ActiveControl == myComboBox) && (keyData == Keys.Return)) {
        MessageBox.Show("Combo Enter");
        return true;
    } else {
        return base.ProcessCmdKey(ref msg, keyData);
    }
}

В этом примере отображается окно сообщения, если вы находитесь в поле со списком, и оно работает, как и раньше, для всех остальных элементов управления.

17
ответ дан 1 December 2019 в 00:30
поделиться

или, альтернативно, вы можете подключить событие KeyDown:

private void comboBox1_KeyDown(object sender, KeyEventArgs e)
{
    if (e.KeyCode == Keys.Enter)
    {
        MessageBox.Show("Enter pressed.");
    }
}
9
ответ дан 1 December 2019 в 00:30
поделиться

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

private void comboBox1_Enter(object sender, EventArgs e)
{
    this.AcceptButton = null;
}

private void comboBox1_Leave(object sender, EventArgs e)
{
    this.AcceptButton = button1;
}

private void comboBox1_KeyDown(object sender, KeyEventArgs e)
    {
        if (e.KeyData == Keys.Enter)
        {
            MessageBox.Show("Hello");
        }
    }

Я должен признать, что мне не нравится мой собственное решение, так как кажется немного хакерским, чтобы отключить / установить свойство AcceptButton, поэтому, если у кого-то есть лучшее решение, мне было бы интересно

0
ответ дан 1 December 2019 в 00:30
поделиться
private void comboBox1_KeyDown( object sender, EventArgs e )
{
   if( e.KeyCode == Keys.Enter )
   {
      // Do something here...
   } else Application.DoEvents();
}
1
ответ дан 1 December 2019 в 00:30
поделиться

Попробуйте следующее:

protected override bool ProcessCmdKey(ref Message msg, Keys k)
{
    if (k == Keys.Enter || k == Keys.Return)
    {
        this.Text = null;
        return true;
    }

    return base.ProcessCmdKey(ref msg, k);
}
1
ответ дан 1 December 2019 в 00:30
поделиться
Другие вопросы по тегам:

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