Вы можете использовать словарь для сопоставления различных нажатий клавиш с функциями и добавления в этот Словарь, где бы это ни было конструктивно. Для очень простой пример:
public partial class Form1 : Form
{
Dictionary<Keys, Action<object, KeyEventArgs>> KeyPressLookup;
public Form1()
{
KeyPressLookup = new Dictionary<Keys, Action<object, KeyEventArgs>>();
KeyPressLookup[Keys.F10] = (o, e) => MessageBox.Show("You pressed F10");
InitializeComponent();
}
private void Form1_KeyDown(object sender, KeyEventArgs e)
{
if(KeyPressLookup.ContainsKey(e.KeyCode) // Could use TryGetValue instead
KeyPressLookup[e.KeyCode](sender, e);
}
}
Этот код имеет ограничение, что только одна функция может быть назначена клавиша, которая может быть хорошим или плохим. Конечно, вы можете сделать словарь списков или «MultiDictionary», если вам нужно несколько функций на ключ.
В качестве альтернативы, вы можете использовать несколько словарей и использовать их в зависимости от обстоятельств, таких как пользовательские параметры или текущий «режим» (в зависимости от того, как структурировано ваше приложение).
Использование лямбда-функций итоговый код в целом может быть намного более кратким, чем определение «регулярной» функции для каждой клавиши.
Возможно, вам также понадобится краткое описание функций, сопоставленных с комбинациями клавиш, такими как Ctrl-F10. Как далеко вы хотите пойти, будет зависеть от размера вашего приложения.
Какое приложение это? Консоль, Windows Forms, WPF? ... –
Извините, это WinForms – ScruffyDuck