C# 不正确、缺失和重复的按键事件
在如何处理键盘事件的OSX实现中似乎存在一个bug。当连续快速按下多个键或同时按下所有键时,该错误就会暴露出来 在Win7上运行我的应用程序如果我同时按下“J”“K”“L”键,我总能得到所有三个键(尽管不是按任何特定顺序)。但在OSX上,当运行Windows窗体应用程序时,我可以得到“JJJ”或“JKK”或“LLL”。OSX中没有其他地方显示这种行为(原生Cocoa应用程序,如TextEdit,其行为与Win7相同) 源代码:(在Visual Studio中,创建windows窗体项目,并编辑Form1的代码): 在Windows 7上运行(一次命中所有JKL): 在OSX上运行(一次全部命中JKL;注意可能需要几次尝试) 如果您错过了它,所有按键事件都是“k”,结果是“kkk”。为什么呢 更新:我正在山狮上运行Mono 2.10.10C# 不正确、缺失和重复的按键事件,c#,winforms,mono,C#,Winforms,Mono,在如何处理键盘事件的OSX实现中似乎存在一个bug。当连续快速按下多个键或同时按下所有键时,该错误就会暴露出来 在Win7上运行我的应用程序如果我同时按下“J”“K”“L”键,我总能得到所有三个键(尽管不是按任何特定顺序)。但在OSX上,当运行Windows窗体应用程序时,我可以得到“JJJ”或“JKK”或“LLL”。OSX中没有其他地方显示这种行为(原生Cocoa应用程序,如TextEdit,其行为与Win7相同) 源代码:(在Visual Studio中,创建windows窗体项目,并编辑F
public partial class Form1 : Form
{
public Form1(){
InitializeComponent();
KeyPress += Form1_KeyPress;
KeyDown += Form1_KeyDown;}
void Form1_KeyDown(object sender, KeyEventArgs e)
{Console.WriteLine("KeyDown: " + e.KeyCode.ToString());}
void Form1_KeyPress(object sender, KeyPressEventArgs e)
{Console.WriteLine("KeyPress: " + e.KeyChar.ToString());}
}
KeyDown: L
KeyPress: l
KeyDown: J
KeyPress: j
KeyDown: K
KeyPress: k
KeyDown: L
KeyPress: k
KeyDown: J
KeyPress: k
KeyDown: K
KeyPress: k