为了账号安全,请及时绑定邮箱和手机立即绑定

C# 按键时切换布尔值

C# 按键时切换布尔值

C#
慕姐8265434 2021-11-14 17:17:05
我目前有一个名为 debug 的 bool。我想要这样,当我按 F10 时,它会将 bool 设置为 true,然后如果我再次按回 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 回答

?
Qyouu

TA贡献1786条经验 获得超11个赞

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 修饰键的状态。


尝试一次可能对你有帮助。


查看完整回答
反对 回复 2021-11-14
?
慕哥9229398

TA贡献1877条经验 获得超6个赞

这取决于您想要的确切行为。您可能最好滚动自己的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


查看完整回答
反对 回复 2021-11-14
  • 2 回答
  • 0 关注
  • 331 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信