将程序从Console重写为WinForms

时间:2012-03-20 18:33:11

标签: c# winforms

我正在尝试从C#控制台到C#窗体重写游戏“猜词”,我有1个问题我不知道怎么停止循环ant 2次从文本框中读取字

while (true)
{
  guess.Text  = Console.ReadLine(); // how to stop loop here and read new word from textbox?

  if (guess.Text=="#")
    break;

  if (guess.Text.CompareTo(secretWord) == 0)
  {
    bGuessedCorrectly = true;
    break;

2 个答案:

答案 0 :(得分:4)

这不是GUI应用程序的工作方式。它们是基于事件的。线程在后台运行,等待用户输入,因此使用另一个循环是多余的。当您在文本框中输入内容(并且可能按下按钮)时,会引发一个您必须使用方法处理的事件。

我建议你阅读一些关于Windows Forms / WPF的教程。

答案 1 :(得分:3)

在Windows窗体应用程序中,主循环实际上已由窗体和操作系统维护。检测到用户输入时,表单将触发事件,例如鼠标单击或击键。作为GUI(图形用户界面)的开发人员,订阅您感兴趣的事件,例如“提交”按钮单击,然后运行相应的逻辑。

通常,在开发UI时,您将使用 designer 这是IDE中的工具(例如Visual Studio),它允许您设计控件的布局(按钮,复选框等)。 )。在Visual Studio中,双击一个控件,将订阅该控件的默认事件(如果是按钮,它将订阅一个click事件,甚至会生成一个事件处理程序(a方法),为该事件编写逻辑:

 private void btnSubmit_Click(object sender, EventArgs e)
    {
        string guessedWord = textBoxGuessedWord.Text;
        if (guessedWord == _secretWord)
        {
            _guessedCorrectly = true;
        }
        else
        {
            _guessedCorrectly = false;
        }
    }