C# c“如何使用ProcessDialogKey捕获特殊字符,如;选项卡"&引用;“向上”;等
我想在按下“Tab”键时注册,但不知道如何使用ProcessDialogKey 这就是我得到的:C# c“如何使用ProcessDialogKey捕获特殊字符,如;选项卡"&引用;“向上”;等,c#,key,C#,Key,我想在按下“Tab”键时注册,但不知道如何使用ProcessDialogKey 这就是我得到的: this.KeyPress += new System.Windows.Forms.KeyPressEventHandler(this.Keypress); private void Keypress(object sender, KeyPressEventArgs e) { MessageBox.Show("button: " + e.KeyChar); } protected
this.KeyPress += new System.Windows.Forms.KeyPressEventHandler(this.Keypress);
private void Keypress(object sender, KeyPressEventArgs e)
{
MessageBox.Show("button: " + e.KeyChar);
}
protected override bool ProcessDialogKey(Keys keyData)
{
switch (keyData)
{
case Keys.Up:
MessageBox.Show("Up");
break;
case Keys.Tab:
MessageBox.Show("Tab");
break;
default:
break;
}
}
这只能捕获常规字符,但我还需要其他字符,如“标签”等
所以我研究了一下,发现很多人都使用过ProcessDialogKey,但我有点不确定如何使用它
以下是我得到的:
this.KeyPress += new System.Windows.Forms.KeyPressEventHandler(this.Keypress);
private void Keypress(object sender, KeyPressEventArgs e)
{
MessageBox.Show("button: " + e.KeyChar);
}
protected override bool ProcessDialogKey(Keys keyData)
{
switch (keyData)
{
case Keys.Up:
MessageBox.Show("Up");
break;
case Keys.Tab:
MessageBox.Show("Tab");
break;
default:
break;
}
}
我得到错误:'project.frm\u test.ProcessDialogKey(System.Windows.Forms.Keys)':找不到合适的方法来重写
我做错了什么
请容忍我。。。我习惯了php:)
所以我对c#::)有点陌生。您的代码正在工作,您的消息框只是显示制表符,即空格 将其转换为int,您将看到它正在工作:
MessageBox.Show("button: " + (int) e.KeyChar);
编辑:
否则,请查看以下代码:
public Form1()
{
InitializeComponent();
this.KeyPress += new KeyPressEventHandler(this.Form1_KeyPress);
this.KeyDown += new KeyEventHandler(this.Form1_KeyDown);
}
// Keypress only handles keys in the ascii range
private void Form1_KeyPress(object sender, KeyPressEventArgs e)
{
MessageBox.Show("KeyPress: " + (int) e.KeyChar);
}
// Keydown will work for all keys
private void Form1_KeyDown(object sender, KeyEventArgs e)
{
MessageBox.Show("KeyDown: " + e.KeyCode);
}