我正在使用TextBox
es进行游戏,但如果他们使用ctrl + a
或ctrl + 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;
}
}
答案 0 :(得分:0)
KeyDown
事件。相反,使用KeyPress
事件,当控件具有焦点并且用户按下并释放键时发生该事件。 KeyPress
事件有KeyPressEventArgs
。因此,您必须使用e.handled = true
而不是e.SuppressKeyPress
事件。
要使用
Keyboard
类和Key
枚举,您必须将PresentationCore
和WindowsBase
程序集添加到项目引用中。
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;
}
}
}
我相信这可以帮助您解决问题。