WindowsForms与简单的Console App的区别

Jul*_*s F 2 c# console interaction visual-studio-2008 winforms

我目前开始将我的控制台项目"移植"到WinForms,但似乎我很难做到这一点.

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

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

Input -> ProcessInput -> Execute -> Output -> wait for input
Run Code Online (Sandbox Code Playgroud)

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

我的意思是,我只是在表单中的每个"项目"中都有这些"...._ Click(object sender ....)".现在我不知道在哪里放置/启动我的流/循环,以及我的类如何与表单交互.

Dan*_*Tao 5

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

1.输入
a TextBox和a Button.当用户点击按钮时,请将TextBox您输入的内容视为您的输入.

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

3.执行
运行您要执行的任何方法.

4.输出
在表单上显示某种消息.这可能只是另一个TextBox,或者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;
    }
}
Run Code Online (Sandbox Code Playgroud)