Как назначить сочетание клавиш (что-то вроде Ctrl + F) для текстового поля в Windows Forms? - PullRequest
8 голосов
/ 23 марта 2010

Я создаю инструмент, используя C #.Это приложение для Windows.У меня есть одно текстовое поле в форме, и я хочу назначить фокус этому текстовому полю, когда пользователь нажимает Ctrl + F или Ctrl + S .

Как мне это сделать?

Ответы [ 4 ]

12 голосов
/ 23 марта 2010

Одним из способов является переопределение события ProcessCMDKey.

protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
{
    if (keyData == (Keys.Control | Keys.S))
    {
        MessageBox.Show("Do Something");
        return true;
    }
    return base.ProcessCmdKey(ref msg, keyData);
}

РЕДАКТИРОВАТЬ: В качестве альтернативы вы можете использовать событие нажатия клавиш - см. Как захватывать сочетания клавиш в Visual Studio .NET .

2 голосов
/ 23 сентября 2016

Захватите событие KeyDown и поместите в него оператор if, чтобы проверить, какие клавиши были нажаты.

private void form_KeyDown(object sender, KeyEventArgs e)
{
    if ((e.Control && e.KeyCode == Keys.F) || (e.Control && e.KeyCode == Keys.S)) {
        txtSearch.Focus();
    }
}
0 голосов
/ 26 января 2019

1-я вещь. Убедитесь, что свойство «Форма Windows» имеет значение «KeyPreview = true»

Свойство события формы открытия 2-й вещи и двойной щелчок по «KeyDown» А также Напишите следующий код внутри тела события: -

private void form1_KeyDown(object sender, KeyEventArgs e)
{
     if ((e.Control && e.KeyCode == Keys.F) || (e.Control && e.KeyCode ==Keys.S)) 
     {
           TextBox1.Focus();
     }
}
0 голосов
/ 23 марта 2010

Добавьте событие, которое фиксирует нажатие клавиши в форме, проанализируйте нажатие клавиши и посмотрите, соответствует ли оно одной из ваших сочетаний клавиш, а затем назначьте фокус.

...