我目前有一个叫做debug的布尔值。我想要它,以便当我按F10键时会将bool设置为true,然后再次按false时将其设置为false。
这是我正在使用的代码:
bool debug = false;
if (cVersion < oVersion)
{
Process.Start("http://consol.cf/update.php");
return;
}
for (; ; )
{
if (debug)
{
Console.WriteLine("Please type in a command");
cmd = Console.ReadLine();
p.Send(cmd);
}
else
{
Console.WriteLine("Press enter to execute config");
Console.ReadLine();
WebConfigReader conf =
new WebConfigReader(url);
string[] tokens = Regex.Split(conf.ReadString(), @"\r?\n|\r");
foreach (string s in tokens)
//ConsoleConfig cons = new ConsoleConfig();
{
p.Send(s);
//p.Send(test);
}
}
谢谢。
答案 0 :(得分:0)
bool debug = false;
public void Toggle()
{
ConsoleKeyInfo keyinfo = Console.ReadKey();
if (keyinfo.Key == ConsoleKey.F10)
{
debug = !debug;
if(debug)
{
//Your code here if debug = true
}
else
{
//Your code here if debug = false
}
}
else
{
//Your code here if key press other than F10
}
}
ConsoleKeyInfo:描述被按下的控制台键,包括由控制台键表示的字符以及SHIFT,ALT和CTRL修改键的状态。
尝试一次,可能对您有帮助。
答案 1 :(得分:0)
这取决于您想要的确切行为。最好推出自己的Console.WriteLine
版本。
以下内容将切换debug
,并立即切换到其他模式,而忽略任何部分输入的命令。
private static bool InterruptableReadLine(out string result)
{
var builder = new StringBuilder();
var info = Console.ReadKey(true);
while (info.Key != ConsoleKey.Enter && info.Key != ConsoleKey.F10)
{
Console.Write(info.KeyChar);
builder.Append(info.KeyChar);
info = Console.ReadKey(true);
}
Console.WriteLine();
result = builder.ToString();
return info.Key == ConsoleKey.F10;
}
// reading input, or just waiting for enter in your infinite loop
string command;
var interrupted = InterruptableReadLine(out command);
if (interrupted)
{
debug = !debug;
continue;
}
// do stuff with command if necessary