2017-06-19 132 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