最近我决定再次尝试编程(虽然我之前有一些与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包含不同的关键选项。
如果您需要进一步的帮助,我很乐意为您提供帮助。