C# 当按下回车键时做某事
我正在尝试在我的小游戏中实现作弊部分。所以基本上是这样的:C# 当按下回车键时做某事,c#,C#,我正在尝试在我的小游戏中实现作弊部分。所以基本上是这样的: public partial class Form1 : Form { public Form1() { InitializeComponent(); } protected override bool ProcessCmdKey(ref Message msg, Keys keyData) { KeyEventArgs e = new KeyEventArgs
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
{
KeyEventArgs e = new KeyEventArgs(keyData);
if (e.KeyCode == Keys.Enter)
{
MessageBox.Show("asd");
return true; // optionally suppress further processing of the enter key by other controls on the form
}
return base.ProcessCmdKey(ref msg, keyData);
}
}
-用户在游戏过程中按回车键(或其他按钮)-一个盒子打开了
-用户输入文本
-作弊激活 我应该把代码添加到表单加载函数中还是其他地方 我找到了一些密码,但不起作用。比如说
if ((Control.ModifierKeys & Keys.Shift) != 0)
{
MessageBox.Show("asd");
}
当我点击Shift按钮时,没有任何事情发生,请尝试将设置为true:
获取或设置一个值,该值指示窗体在将事件传递给具有焦点的控件之前是否接收键事件
在设计器或构造函数中:
public Form1()
{
InitializeComponent();
KeyPreview = true;
}
由于没有完整的答案,我给出了完整的代码:
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
KeyPreview = true;
// Full syntax in case you're using some older Visual Studio.
this.KeyDown += new System.Windows.Forms.KeyEventHandler(this.Form1_KeyDown);
}
private void Form1_KeyDown(object sender, KeyEventArgs e)
{
if ((Control.ModifierKeys & Keys.Shift) != 0)
{
MessageBox.Show("asdf");
}
}
}
@如果没有事件处理程序,Selman22的建议将不起作用,我的建议当然也不起作用。尝试将设置为true
:
获取或设置一个值,该值指示窗体在将事件传递给具有焦点的控件之前是否接收键事件
在设计器或构造函数中:
public Form1()
{
InitializeComponent();
KeyPreview = true;
}
由于没有完整的答案,我给出了完整的代码:
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
KeyPreview = true;
// Full syntax in case you're using some older Visual Studio.
this.KeyDown += new System.Windows.Forms.KeyEventHandler(this.Form1_KeyDown);
}
private void Form1_KeyDown(object sender, KeyEventArgs e)
{
if ((Control.ModifierKeys & Keys.Shift) != 0)
{
MessageBox.Show("asdf");
}
}
}
@如果没有事件处理程序,Selman22的建议将不起作用。您可以处理表单的事件:
private void Form_KeyDown(object sender, System.Windows.Forms.KeyEventArgs e)
{
if(e.KeyCode == Keys.Enter)
{
// ...
}
}
您可以处理窗体的事件:
private void Form_KeyDown(object sender, System.Windows.Forms.KeyEventArgs e)
{
if(e.KeyCode == Keys.Enter)
{
// ...
}
}
跟我走
您不需要订阅任何事件,并且可以随时使用它,尽管您需要为某些UI容器类型设置Focusable=true,请阅读帮助文本。随附
您不需要订阅任何事件,并且可以随时使用它,尽管您需要为某些UI容器类型设置Focusable=true,请阅读帮助文本。在表单代码中覆盖ProcessCmdKey(),如下所示:
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
{
KeyEventArgs e = new KeyEventArgs(keyData);
if (e.KeyCode == Keys.Enter)
{
MessageBox.Show("asd");
return true; // optionally suppress further processing of the enter key by other controls on the form
}
return base.ProcessCmdKey(ref msg, keyData);
}
}
这不需要将KeyPreview设置为true。在表单代码中重写ProcessCmdKey(),如下所示:
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
{
KeyEventArgs e = new KeyEventArgs(keyData);
if (e.KeyCode == Keys.Enter)
{
MessageBox.Show("asd");
return true; // optionally suppress further processing of the enter key by other controls on the form
}
return base.ProcessCmdKey(ref msg, keyData);
}
}
这并不要求将KeyPreview设置为true。仍然没有任何事情发生。我应该从某处调用此函数吗?您需要订阅事件,
this.KeyDown+=Form\u KeyDown代码>将其放入表单加载事件我添加了messagebox。在if语句中显示事件。我加上了这个,按键。。我的表单加载事件的代码。当我按下表单上的第一个按钮时,单击。我换班了,但还是没发生什么。我应该从某处调用此函数吗?您需要订阅事件,this.KeyDown+=Form\u KeyDown代码>将其放入表单加载事件我添加了messagebox。在if语句中显示事件。我加上了这个,按键。。我的表单加载事件的代码。当我按下表单上的第一个按钮时,单击。我用Shift键更改了Enter键,但仍然没有发生任何事情。我认为这是关于WinForms
的,我想不出在WPF
上下文中使用键盘
类的方法。如果你有样品的话,你能给我看看吗?我错过了(winForms)。但是考虑到这一点,我打赌有一些.dll调用要容易得多。对不起,我从60年代开始就没有写过任何winforms代码(可能晚一点,但不多)。我想这是关于winforms
的,我想不出在WPF
上下文之外使用键盘
类的方法。如果你有样品的话,你能给我看看吗?我错过了(winForms)。但是考虑到这一点,我打赌有一些.dll调用要容易得多。很抱歉,我从60年代开始就没有写过任何winforms代码(可能会晚一点,但不会太多)。好的,那么你必须告诉我们更多关于你的代码/设计的信息,因为它应该可以工作;-)好的,那么您必须告诉我们更多关于您的代码/设计的信息,因为它应该可以工作;-)很好的解决方法。。。但我仍然想知道@JayGatsby是如何让正常的解决方案变得没有反应的;-]很好的解决方法。。。但我仍然想知道@JayGatsby是如何让正常的解决方案变得没有反应的;-]