在窗体中实现嵌套if循环

本文关键字:if 循环 嵌套 实现 窗体 | 更新日期: 2023-09-27 17:54:52

例如,我在控制台有一个嵌套的if-cycle,如

if (answer == "one")
{
    Console.WriteLine("one or two?");
    string answer = Console.ReadLine();
    if (answer == "one")
    {
        Console.WriteLine("pressed1");
    }
    else 
        Console.WriteLine("pressed2")
    //....and so on
}

一切正常。但是,如果我尝试在winform中做同样的事情,事实证明,通过按下Button1 ,我得到所有嵌套的结果标记为"btn1"。所以我得到"pressed 1 pressed 1"。我如何使我的程序停止与console . readline()停止在控制台中相同的方式?

if (btn.Name == "btn1")
{
    richTextBox1.AppendText("Pressed1");
    if (btn.Name == "btn1")
    {
        richTextBox1.AppendText("pressed1");
    }
    else (btn.Name == "btn2")
    {
        richTextBox1.AppendText("pressed2");
    }

在窗体中实现嵌套if循环

张贴的代码片段不完整,但很容易推测出混乱的原因。

基本上,您的控制台应用程序是按顺序处理的,其中某些阻塞调用将输入注入流。

另一方面,在WinForm应用程序中,flow是基于事件的。没有预先确定的事件顺序,也没有阻塞调用。

您的控制台代码检查外部ifanswer变量的值,然后等待来自用户的新输入以进行进一步处理。你的WinForm代码检查btn.Name,附加一些文本到文本框,然后立即移动到下一个if语句。如果您想要停止此序列,请从事件处理程序中执行return,并在另一个事件处理程序中继续您的流。

一个潜在的-1注释: 是的,我知道控制台应用程序可以是基于事件的,不一定是顺序的等等。这个答案应该有助于OP理解逻辑& &;问题。