Как сделать так, чтобы сочетания клавиш нажимали кнопки

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

Вот как выглядит моя работа (на данный момент): введите здесь описание изображения

Мне нужно сделать ярлыки для этих кнопок, чтобы пользователю не приходилось нажимать кнопку мышью. Я хочу сделать так, чтобы когда пользователь нажимал F1 на клавиатуре, он как бы нажимал кнопку 1 мышью. F2 означает кнопку2 и так далее. Сочетания клавиш, такие как CTRL+некоторая клавиша, также приемлемы. Мне нужен только пример, как сделать пару кнопок, и я сделаю другие :) Спасибо


person user3696764    schedule 01.06.2014    source источник
comment
вы должны посмотреть здесь: stackoverflow.com/questions/400113/   -  person hillel_guy    schedule 01.06.2014


Ответы (2)


Установите для свойства KeyPreview формы Form1 значение true в дизайнере или в коде:

this.KeyPreview = true;

Затем добавьте в форму действие KeyUp, которое принимает все ключи (даже Delete и т. д.):

private void Form1_KeyUp(object sender, KeyEventArgs e)
{
   if (e.KeyCode == Keys.Delete)
   {
      button1ClickMethod();
   }
}

Затем разделите действия кнопок на отдельные методы, например button1ClickMethod(), и избегайте использования метода Button1_Click(null, null);. Вызовите это button1ClickMethod() в событии KeyUp, когда нужная клавиша нажата.

Чтобы использовать комбинации, вы можете использовать это:

// If CTRL and F1 were pressed
if (e.Control && e.KeyCode == Keys.F1)
{
   MessageBox.Show("Shortcut CTRL + F1 was pressed!");
}

Вы также можете проверить, была ли клавиша Shift нажата одновременно со свойством e.Shift, так же, как и e.Control.

person W0lfw00ds    schedule 01.06.2014

Событие KeyPress поможет вам

Образец кода ;

private void Form1_KeyPress(object sender, KeyPressEventArgs e)
    {
        //Call the event according to key
        // if(e.KeyChar == "")
        //btnSave_Click(null,null)
    }
person hbaktir    schedule 01.06.2014