C# 按键启动计时器
我正在尝试制作一个程序,它可以: 如果您按下开始(按钮1),它应该开始工作 如果您按下停止(按钮2),它将停止,直到您再次按下开始 我的目标:当它打开,空格被按下时,它应该“垃圾邮件”空格(你按住空格,它在游戏中不断跳跃(cs)) 基本上,我正在尝试为游戏创建兔子跳跃。 我对c#form应用程序非常陌生,所以我不知道我的代码出了什么问题 什么不起作用:按键向下和向上事件 这是我的密码:C# 按键启动计时器,c#,timer,keypress,C#,Timer,Keypress,我正在尝试制作一个程序,它可以: 如果您按下开始(按钮1),它应该开始工作 如果您按下停止(按钮2),它将停止,直到您再次按下开始 我的目标:当它打开,空格被按下时,它应该“垃圾邮件”空格(你按住空格,它在游戏中不断跳跃(cs)) 基本上,我正在尝试为游戏创建兔子跳跃。 我对c#form应用程序非常陌生,所以我不知道我的代码出了什么问题 什么不起作用:按键向下和向上事件 这是我的密码: namespace Bunny { public partial class Form1 : Form
namespace Bunny
{
public partial class Form1 : Form
{
Timer timer = new Timer();
Boolean isOn = false;
public Form1()
{
InitializeComponent();
timer.Tick += new EventHandler(timer1_Tick);
timer.Interval = 50;
}
private void Form1_Load(object sender, EventArgs e)
{
}
private void button1_Click(object sender, EventArgs e)
{
timer.Enabled = true;
timer.Start();
}
private void timer1_Tick(object sender, EventArgs e)
{
if(isOn)
{
SendKeys.Send(" ");
}
}
private void button2_Click(object sender, EventArgs e)
{
timer.Enabled = false;
timer.Stop();
}
private void Form1_KeyDown(object sender, System.Windows.Forms.KeyEventArgs e)
{
if (e.KeyCode == Keys.Space)
{
isOn = true;
}
}
private void Form1_KeyUp(object sender, System.Windows.Forms.KeyEventArgs e)
{
if (e.KeyCode == Keys.Space)
{
isOn = false;
}
}
}
}
为了让你们的钥匙在游戏中被检测到,它需要被编程为一个全局热键。我的猜测是,当窗体聚焦时,会检测到您的按键,但在游戏中不会 请参阅下面的链接。
程序在做什么?你现在得到的是什么行为?如果我手动设置isOn true(在初始化时),它可以工作,但它不适用于空间(也尝试了其他键),你在哪里使用方法
bunny\u KeyUp
?哦,我想这不应该是bunny,而是form1,但仍然不起作用,这起作用:protected override bool ProcessCmdKey(参考消息消息消息,按键数据)但它无法检测按键是否仍在按下…这是整个程序,当您单击按钮时,按钮会获得焦点。SendKeys键现在转到按钮,而不是任何程序应该获得的键。您需要重新调整窗口焦点。需要Pinvoke、GetForeGroundIndow和SetForeGroundIndow。