禁用TextBoxes中的某些键盘操作。 (VC #Windows表单应用程序)

时间:2015-09-26 15:27:35

标签: c# .net winforms keyboard

我正在使用TextBox es进行游戏,但如果他们使用ctrl + actrl + z,他们可以作弊。如何在我的textBoxes中启用这些操作?

我试过这样做:

private void Form1_Load(object sender, EventArgs e)
{
    foreach (Control x in this.Controls)
    {
        if (x is TextBox)
        {
            ((TextBox)x).KeyDown += textBox_KeyDown;
        }
    }          
}

static void textBox_KeyDown(object sender, KeyEventArgs e)
{

    if(e.KeyCode == Keys.Z && e.KeyCode == Keys.ControlKey)
    {
        e.SuppressKeyPress = true; 
    }
    if (e.KeyCode == Keys.A && e.KeyCode == Keys.ControlKey)
    {
        e.SuppressKeyPress = true;
    }
}

1 个答案:

答案 0 :(得分:0)

首次按下某个键时会发生

KeyDown事件。相反,使用KeyPress事件,当控件具有焦点并且用户按下并释放键时发生该事件。 KeyPress事件有KeyPressEventArgs。因此,您必须使用e.handled = true而不是e.SuppressKeyPress事件。

  

要使用Keyboard类和Key枚举,您必须将PresentationCoreWindowsBase程序集添加到项目引用中。

KeyPress事件:

static void textBox1_KeyPress(object sender, KeyPressEventArgs e)
{
    if ((Control.ModifierKeys & Keys.Control) == Keys.Control)
    {
        if (Keyboard.IsKeyDown(Key.A))
        {
            e.Handled = true;
        }
        if(Keyboard.IsKeyDown(Key.Z))
        {
            e.Handled = true;
        }
    }
}

我相信这可以帮助您解决问题。