Windows表单热键比用户可以更改



最近我决定再次尝试编程(虽然我之前有一些与python有一些经验(,但我选择了C#来玩。目前,我正在尝试开发一个用户可以更改Hotkeys的应用程序,这就是我所拥有的:

void MainFormKeyDown(object sender, KeyEventArgs e){
    object altTecla = comboBox1.SelectedItem;
    object tecla = comboBox1.SelectedItem;
    if(combobox1.SelectecIndex != 0){   //Index 0 = without 'alt', 'ctrl' or 'shift'
        if (e.Modifiers == Keys.altTecla && e.KeyCode == Keys.tecla){
           //do something
        }
     } else {
        if (e.KeyCode == Keys.tecla{
           //do something
        }
     }
}

,但我无法运行:

'System.Windows.Forms.Keys' does not contain a definition for 'tecla' (CS0117)
'System.Windows.Forms.Keys' does not contain a definition for 'tecla' (CS0117)
'System.Windows.Forms.Keys' does not contain a definition for 'altTecla' (CS0117)

显然,它并未将" alttecla"one_answers" tecla"视为变量,我不知道哪种类型的" alttecla"one_answers" tecla"应该是。

我尝试搜索类似的帖子,但没有。我该怎么办?另外,代码中还有其他问题吗?我怀疑这两个如果是不起作用,但我尚未测试。

在应用程序中使用hotkeys的正确方法(或至少我以前做过的方式(是导入这些功能(您将这些代码行与属性相同的位置放置或字段或方法(。

[DllImport("user32.dll")] 
public static extern bool RegisterHotKey(IntPtr hWnd, int id, int fsModifiers, int vlc);
[DllImport("user32.dll")]
public static extern bool UnregisterHotKey(IntPtr hWnd, int id);
// Modifier keys codes: Alt = 1, Ctrl = 2, Shift = 4, Win = 8
// Compute the addition of each combination of the keys you want to be pressed
// ALT+CTRL = 1 + 2 = 3

您可以这样使用...

RegisterHotKey(Handle, 1, 2, (int)Keys.T);

这将使用该表格中调用的句柄,给出1个ID(可以具有多个不同的热键,因此请给出一个ID以识别每个键参数为2。

最好的方法是在SelectedIndexChanged事件中注册和注册HotKey,如果ComboBox包含不同的关键选项。

如果您需要进一步的帮助,我很乐意为您提供帮助。

最新更新