2

我目前开始将我的控制台项目“移植”到 WinForms,但似乎我在这方面做得很失败。

我只是习惯了控制台结构:

我让我的类根据来自控制台的输入相互交互。一个简单的流程:

Input -> ProcessInput -> Execute -> Output -> wait for input

现在我得到了这个大的 Form1.cs(等等)和“Application.Run(Form1);” 但我真的不知道我的类如何与表单交互并创建我上面描述的流程。

我的意思是,对于表单中的每个“项目”,我只有这些“...._Click(object sender ....)”。现在我不知道在哪里放置/开始我的流程/循环,以及我的类如何与表单交互。

4

2 回答 2

5

很简单,实际上(虽然我可以同情你的困惑)......

1.输入
有一个TextBox和一个Button。当用户单击按钮时,将您的任何内容TextBox视为您的输入。

2. 处理输入
在控制台应用程序中,用户在处理输入时无法执行任何操作。在 Windows 窗体应用程序中与此类似的是禁用用户可以提供输入的机制。所以,设置你的TextBox.Enabled = falseand Button.Enabled = false

3. 执行
运行你想执行的任何方法。

4. 输出
在表单上显示某种消息。这可能只是 another TextBox,或者 a RichTextBox... 任何你想要的。

5. 等待输入
一旦执行了第 3 步中的方法,您已经在第 4 部分中显示了输出,您可以继续并重新激活接受输入的机制:TextBox.Enabled = trueButton.Enabled = true

所以基本上你的代码应该是这样的:

void myButton_Click(object sender, EventArgs e) {
    try {
        myInputTextBox.Enabled = false;
        myButton.Enabled = false;

        var input = ParseInput(myInputTextBox.Text);

        var output = ExecuteMethodWithInput(input);

        myOutputTextBox.Text = FormatOutput(output);

    } finally {
        myInputTextBox.Enabled = true;
        myButton.Enabled = true;
    }
}
于 2010-05-05T16:06:34.723 回答
3

基本上,您可以让您的表单提供一组用于输入数据的控件(即:一个或多个 TextBox 控件)。如果您有一个用户单击的按钮,并且您想要处理,只需双击该按钮即可。这将为您提供一个事件处理程序,例如:

private void button1_Click(object sender, EventArgs e)
{
     // Process Input from TextBox controls, etc.
     // Execute method
     // Set output (To other controls, most likely)
}

就是这样——“循环”消失了,因为标准的 Windows 消息泵取而代之。

于 2010-05-05T16:00:14.803 回答