在winform中实现嵌套的If循环

时间:2015-06-10 15:48:24

标签: c# winforms nested

例如,我在控制台中有一个嵌套的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”。所以我得到“按1按1”。如何使程序停止与在Console.ReadLine()中停止的方式相同?

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

1 个答案:

答案 0 :(得分:1)

发布的代码片段未满,但很容易推测出混淆是什么。

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

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

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

潜在-1的注释: 是的,我知道控制台应用程序可以基于事件,不必是顺序的,依此类推。这个答案应该有助于OP了解逻辑和逻辑。问题