例如,我在控制台中有一个嵌套的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");
}
答案 0 :(得分:1)
发布的代码片段未满,但很容易推测出混淆是什么。
基本上,您的控制台应用程序正在按顺序处理,某些阻塞调用将输入注入流中。
另一方面,在WinForm应用程序上,flow是基于事件的。没有预定的事件序列,也没有阻塞调用。
您的控制台代码会检查外部answer
中if
变量的值,然后等待用户的新输入以进行进一步处理。您的WinForm代码会检查btn.Name
,在文本框中附加一些文字,然后 立即 会转到下一个if
语句。如果要从事件处理程序中停止此序列return
,并在另一个事件处理程序中继续您的流程。
潜在-1的注释: 是的,我知道控制台应用程序可以基于事件,不必是顺序的,依此类推。这个答案应该有助于OP了解逻辑和逻辑。问题