C# c“如何使用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

我想在按下“Tab”键时注册,但不知道如何使用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;         
    }
}
这只能捕获常规字符,但我还需要其他字符,如“标签”等

所以我研究了一下,发现很多人都使用过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); 
}