Связывание клавиш в c # - PullRequest
0 голосов
/ 30 мая 2018

В моем приложении Windows есть поле со списком, в котором содержатся строковые значения, такие как «Tab», «Пробел» и т. Д. Что мне нужно, когда пользователь выбирает один из этих параметров в поле со списком, он устанавливаетэто как связывание клавиш для выполнения некоторых инструкций.Например,

string[] KeyBinds = new string[] {"Tab", "Caps Lock", "Shift", "Ctrl", "Alt", "Space", "Enter", "Backspace"};
VelocityKeyBindComboBox.Items.AddRange(KeyBinds);
if (e.KeyCode == Keys.Space) //I thought of something like e.keycode == Keys.KeyBind
{
    Timer.Stop();
}

Заранее спасибо за помощь.

Ответы [ 2 ]

0 голосов
/ 30 мая 2018

Я не могу комментировать, поэтому я добавлю ответ.

как я понял, вам нужно получить ключ выбранного значения в поле со списком.Если значение равно true, выполните следующие действия:

объявите класс, содержащий ваши объекты:

public class MyObj
{
  public string ID;
  public string Name;
}
List<MyObj> mylist = new List<MyObj> ();
// Fill the list with data
// Fill goes here
// Bind the list to the combobox
    combobox1.DatasSource = mylist;
// Set what to show to the user, and which property to be your key
    combobox1.DisplayMember = "Name";
    combobox1.ValueMember = "ID"

Когда пользователь выбирает элемент, вы можете получить его:

combobox1.SelectedValue;
0 голосов
/ 30 мая 2018

Вы можете

  • напрямую использовать массив ключей вместо строк. Keys[] KeyBinds = new Keys[] {Keys.Space,Keys.Enter,...}; или, вернее, список.

  • использовать Dictionary<string,Keys> для сопоставления двух, затем if (KeyBinds["Space"] == Keys.Space) и т.д. KeysConverter , который может помочь.Или вы можете использовать целые вместо строк.

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