[英]how to change a boolean value if a key is pressed down c#
我试图在按下某个键时更改一个布尔值,但是当释放时返回到false,因此,如果所有参数都正确并且按下某个键,则只能触发if语句。
public class boolean
{
public static Boolean keyPresed = false;
}
private void mainForm_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyData == Keys.A)
{
MessageBox.Show(" just for debugging ");
boolean.keyPresed = true;
}
else {
boolean.keyPressed = false;
}
if (tileBuyPlayer2.Checked && ownerShipsPlayer2.peacockOwner == false && boolean.keyPresed == true)
{
// do this sorry not on here cause how big it is
}
}
}
您可以global var in this class
中将keyAPressed声明为global var in this class
变量 ,并在KeyDown事件中将其reset
:
public class DemoClass
{
public static Boolean keyAPressed = false;
private void mainForm_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.A)
{
MessageBox.Show(" just for debugging ");
keyAPressed = true;
}
else
{
keyAPressed = false;
}
if (keyAPressed == true)
{
// Reset keyAPressed to false
keyAPressed = false
if (tileBuyPlayer2.Checked && ownerShipsPlayer2.peacockOwner == false)
{
// do this sorry not on here cause how big it is
}
}
}
}
或使用KeyUp事件reset keyAPressed
:
public class DemoClass
{
public static Boolean keyAPressed = false;
private void mainForm_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.A)
{
MessageBox.Show(" just for debugging ");
keyAPressed = true;
}
else
{
keyAPressed = false;
}
if (tileBuyPlayer2.Checked && ownerShipsPlayer2.peacockOwner == false && keyAPressed == true)
{
// do this sorry not on here cause how big it is
}
}
private void mainForm_KeyUp(object sender, KeyEventArgs e)
{
keyAPressed = false;
}
}
如果您乐于尝试使用Microsoft的反应框架,则可以尝试执行以下操作:
var keyDown = Observable.FromEventPattern<KeyEventArgs>(mainForm, "KeyDown");
var query =
from kd in keyDown
where kd.EventArgs.KeyCode == Keys.A
where tileBuyPlayer2.Checked
where ownerShipsPlayer2.peacockOwner == false
select kd;
query.Subscribe(x =>
{
// do your code here
});
我可能错过了您想要做的事情,但是我认为这使事情变得容易得多。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.