2010-05-05 66 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

相關問題