2017-06-19 86 views
0

我宣佈通過點擊按鈕一個文本框:如何將textbox聲明爲全局變量?

Dim tp = TabControl2.TabPages(TabControl2.TabPages.Count - 1) 
Dim txtbox As New TextBox() 
txtbox.Location = New Point(200, 0) 
txtbox.Height = 20 
txtbox.Width = 100 
tp.Controls.Add(txtbox) 

現在我想在另一個子標籤來顯示文本框的內容。我的第一個嘗試是:

label.Text = txtbox.text 

但沒有工作,因爲我的文本框在本地聲明,我不知道如何把這個聲明爲一個全局變量...

+0

聲明模塊中的文本框,你就完成了!你不需要'Dim txtbox As New TextBox()'。當發現新名字變得困難或者使用線程時,全局變量在大型項目中不好。否則就沒事了。 –

+0

@γηράσκωδ'εετππλάδιδασκόμε:看起來他正在將文本框動態添加到最後一個標籤頁。據推測,他也是動態添加新標籤頁,所以全局變量不會工作得很好,除非它是一個文本框列表。 –

回答

0

的問題是,你永遠不會設置文本屬性。試試這個:

Dim tp = TabControl2.TabPages(TabControl2.TabPages.Count - 1) 
Dim txtbox As New TextBox() 
txtbox.Text = "Some Text" 
txtbox.Location = New Point(200, 0) 
txtbox.Height = 20 
txtbox.Width = 100 
tp.Controls.Add(txtbox) 

我在你的例子中增加了一行代碼。

+0

thx爲你的快速響應,但我的標籤仍然沒有找到之前宣佈的文本框 – Kitsune

+1

有關更完整的答案,請參閱@Steve的響應。 –

3

如果您有任務有解決方法,您應該嘗試避免使用全局變量。例如,您可以從您添加它的Controls集合中檢索您的文本框。你只需要一些東西來幫助你找到正確的文本框。

Dim tp = TabControl2.TabPages(TabControl2.TabPages.Count - 1) 
Dim txtbox As New TextBox() 
txtbox.Location = New Point(200, 0) 
txtbox.Height = 20 
txtbox.Width = 100 
txtbox.Name = "MyImportantTextBox" 
tp.Controls.Add(txtbox) 

現在,當你想找回

Dim tp = TabControl2.TabPages(TabControl2.TabPages.Count - 1) 
Dim textbox = tp.Controls. 
       OfType(Of TextBox). 
       FirstOrDefault(Function(x) x.Name = "MyImportantTextBox") 
if textbox IsNot Nothing Then 
    label.Text = textbox.Text 
End If 

也有另一種簡單的可能性,添加一個處理程序文本框TextChanged事件,當你在文本框輸入內容反映在標籤中的內容。

Dim tp = TabControl2.TabPages(TabControl2.TabPages.Count - 1) 
Dim txtbox As New TextBox() 
txtbox.Location = New Point(200, 0) 
txtbox.Height = 20 
txtbox.Width = 100 
AddHandler txtbox.TextChanged, AddressOf OnMyTextBoxChange 
tp.Controls.Add(txtbox) 

然後添加一個事件處理程序,這樣

Sub OnMyTextBoxChange(sender as Object, e as EventArgs) 
    Dim txtbox = DirectCast(sender, TextBox) 
    label.Text = txtbox.Text 
End Sub 
0

布萊恩的txtbox有一個好主意。

我個人的選擇是聲明一個全局字符串變量,並在您的按鈕單擊過程中指定它的文本框的值。

+0

如果他在很多標籤頁中有很多文本框會怎麼樣?那麼一個變量就不夠了。最好遵循史蒂夫的建議,並得到你想要的。 –

+0

我沒有想到的有效點 – cMcNerlin