2010-05-05 70 views
2

我目前开始将我的控制台项目“移植”到WinForms,但看起来我很失败。WindowsForms与简单控制台应用程序的区别

我只是用一个控制台结构:

我得到了我的班互相取决于输入从控制台来进行交互。 一个简单的流程:

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

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

我的意思是,我只是有这些“...._点击(对象发件人....)”表格内的每个“项目”。 现在我不知道在哪里放置/开始我的流程/循环,以及我的类如何与表单交互。

回答

5

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

1.输入
有一个TextBoxButton。当用户点击按钮时,请将您的TextBox中的任何内容当作您的输入。

2.过程输入
在一个控制台应用程序,用户将无法当你处理输入做任何事情。在Windows窗体应用程序中对此的模拟是禁用用户可以提供输入的机制。因此,请设置TextBox.Enabled = falseButton.Enabled = false

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

4.输出
在窗体上显示某种消息。这可能只是另一个TextBoxRichTextBox ......无论你想要什么。

输入
一旦你的方法从步骤3

5.等待已执行,你显示输出部分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; 
    } 
} 
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消息泵取代它的位置。

+0

所以我要看看每个事件处理程序就像是一个“小流”? – 2010-05-05 16:02:53

+0

@ daemonfire300:基本上,它是您处理的“切入点”。您在说“当用户点击此按钮时,我想运行此代码...”,因此它为您提供了一种“处理”并启动流量控制的方法。 – 2010-05-05 16:21:39

相关问题