C# Windows窗体与简单控制台应用程序的区别

C# Windows窗体与简单控制台应用程序的区别,c#,winforms,visual-studio-2008,console,interaction,C#,Winforms,Visual Studio 2008,Console,Interaction,我目前开始将我的控制台项目“移植”到WinForms,但似乎我做得很失败 我只是习惯了控制台结构: 我让我的类根据来自控制台的输入相互交互。 一个简单的流程: Input -> ProcessInput -> Execute -> Output -> wait for input 现在我得到了这个大的Form1.cs(等等)和“Application.Run(Form1);” 但我真的不知道我的类如何与表单交互并创建如上所述的流 我的意思是,对于表单中的每个“项目”,我

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

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

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

Input -> ProcessInput -> Execute -> Output -> wait for input
现在我得到了这个大的Form1.cs(等等)和“Application.Run(Form1);” 但我真的不知道我的类如何与表单交互并创建如上所述的流

我的意思是,对于表单中的每个“项目”,我都有这些“…\u单击(对象发送者…)”。
现在我不知道在哪里放置/启动我的流/循环,以及我的类如何与表单交互。

基本上,您可以让表单提供一组用于输入数据的控件(即:一个或多个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消息泵取代了它。

事实上相当简单(尽管我可以同情你的困惑)

1。输入
有一个
文本框
和一个
按钮
。当用户单击按钮时,将
文本框中的内容作为输入

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

3。执行
运行您想要执行的任何方法

4。输出
在表单上显示某种消息。这可能只是另一个
文本框
,或
RichTextBox
。。。你要什么都行

5。等待输入
执行步骤3中的方法后,您已经在第4部分中显示了输出,您可以继续并重新激活接受输入的机制:
TextBox.Enabled=true
Button.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;
    }
}

因此,我必须将每个事件处理程序视为一个“小流程”?@daemonfire300:基本上,它是处理的“入口点”。你说“当用户点击这个按钮时,我想运行这个代码…”所以它为你提供了一种“处理”和启动流控制的方法。