【问题标题】:WindowsForms difference to simple Console AppWindowsForms 与简单控制台应用程序的区别
【发布时间】:2010-05-05 15:56:46
【问题描述】:

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

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

我的班级根据来自控制台的输入进行交互。 一个简单的流程:

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

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

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

【问题讨论】:

    标签: c# winforms visual-studio-2008 console interaction


    【解决方案1】:

    其实很简单(虽然我可以理解你的困惑)...

    1.输入
    有一个TextBox 和一个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;
        }
    }
    

    【讨论】:

      【解决方案2】:

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

      【讨论】:

      • 所以我必须将每个事件处理程序视为“小流程”?
      • @daemonfire300:基本上,它是您处理的“入口点”。您是在说“当用户单击此按钮时,我想运行此代码......”因此它为您提供了一种“处理”并启动流程控制的方式。
      猜你喜欢
      • 2010-11-04
      • 1970-01-01
      • 1970-01-01
      • 2012-07-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-05-01
      相关资源
      最近更新 更多