按键时C#切换布尔

时间:2018-08-04 05:20:45

标签: c#

我目前有一个叫做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);
                }
            }

谢谢。

2 个答案:

答案 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