System.Windows.Forms.Keys
- это enum
, в котором перечислены большинство P C кодов сканирования клавиатуры (обратите внимание, что коды сканирования не обязательно отображают 1: 1 непосредственно на физические клавиши).
Загрузить их в ComboBox просто. Я рекомендую использовать DataBinding с ComboBox, чтобы избежать проблем, вызванных одинаковыми значениями перечисления с разными именами (которые будут отображаться с именем, общим для обоих значений).
class KeyItem
{
public static IReadOnlyList<KeyItem> List { get; } = CreateList();
private static IReadOnlyList<KeyItem> CreateList()
{
String[] names = Enum.GetNames( typeof(System.Windows.Forms.Keys) );
Key[] values = Enum.GeValues( typeof(System.Windows.Forms.Keys) );
return Enumerable
.Range( 0, names.Length )
.Select( i => new KeyItem( values[i], names[i] ) )
.ToList();
}
private KeyItem( Key key, String name )
{
this.KeyCode = key;
this.Name = name ?? throw new ArgumentNullException(nameof(name));
}
public Key KeyCode { get; }
public String Name { get; }
}
comboBox1.DropDownStyle = ComboBoxStyle.DropDownList;
comboBox1.DisplayMember = nameof(KeyItem.Name);
comboBox1.ValueMember = nameof(KeyItem.KeyCode);
comboBox1.DataSource = KeyItem.List;
comboBox1.SelectedIndex = 0;