2013-04-22 40 views
0

我正在構建一個基於文本的遊戲,並且想像我通常使用窗體而不是控制檯。 所以我開始重建一個控制檯 - 我創建了2個文本框,一個作爲輸出,一個作爲輸入。VB.NET在窗體應用程序中重新創建console.readline函數

我在執行此操作時遇到了以下問題: 在控制檯應用程序中,您可以使用console.readline()
例如爲:Dim str as String = console.readline()
現在我需要在窗體應用程序,我在那裏等待用戶按下輸入框中輸入並得到他寫的文字這種效果。
例如:我要求輸入字符名稱,用戶必須在輸入框中輸入它,現在我需要他以某種方式鍵入的名稱。

編輯:

我想我需要一些方法來等待事件不會阻塞UI線程提高。


我明白任何幫助解決這個問題,
Mylo。

回答

1

要使用該窗體作爲控制檯,您需要讓您的readLine方法等待用戶擊中輸入到TextBox控件中的事件,而不會阻塞您需要使用多線程(硬件)的UI線程。或任務(難度很大,使用異步編程很容易),這不是一個簡單的技巧,所以我認爲更好的做法是使用舊的值得推薦的System.Console來完成這項工作。

但是,如果你想嘗試一下,有一些第三方控件可以這樣做,就像這樣:http://www.codeproject.com/Articles/9621/ShellControl-A-console-emulation-control,代碼項目中有其他的,所以你可能想深入挖掘並找到一個你喜歡。

編輯

這是一個小型異步循環,注意,我使用也等待。

do 
    await Task.Delay(100) 
loop while (ReadingLine) 
+0

我想要做的主要事情是等待輸入表單中的輸入,並以某種方式使用輸入。我想你的意思是用system.console在控制檯應用程序中完成整個項目?好吧,我想生病也需要一些表格/按鈕。 - 如果我做異步,我會需要一個異步while /直到循環,我不明白:/對嗎? – mahnouel 2013-04-22 19:29:43

+0

是的,我的意思是一個控制檯應用程序,並使用異步,你將需要一個異步循環。 – Rafael 2013-04-22 19:37:08

+0

之後,我似乎無法找到任何有用的東西。是否有可能將我鏈接到資源? – mahnouel 2013-04-22 19:45:29

0

我認爲你大大地推翻了這個,我的朋友。該文本框在默認情況下稱爲TextBox1。

因此,捕捉到文本框裏面的數據,你說:

Dim someIdentifier As String = TextBox1.Text 

現在你已經捕獲了變量的數據,就好像當你使用捕捉它

Console.ReadLine() 
+0

事情是他們按下輸入後,文本框被清除並附加到輸出框。所以我不能簡單地從中獲得價值。 – mahnouel 2013-04-23 13:24:24

相關問題