我是.NET编程的新手。
我需要在运行时创建多个TextBoxies。
我有以下VB NET代码:
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim textbox1 As New TextBox
static Dim shiftDown As Integer
static Dim counter As Integer
counter += 1
shiftDown = shiftDown + 30
textbox1.Name = "Textbox" + counter.ToString()
textbox1.Size = New Size(170, 10)
textbox1.Location = New Point(10, 32 + shiftDown)
textbox1.Visible = True
GroupBox1.Controls.Add(textbox1)
End Sub
此代码示例在单击Button1后在运行时在Form上创建多个Text Box。
我的问题是在单击按钮后存储创建的文本框的位置?
答案 0 :(得分:2)
@Darren所写的内容是正确的理论问题。我不确定这是不是你要找的东西,所以这里有更多的信息。
与任何局部变量一样,textbox1
的范围限定在它定义的方法中,并在Sub返回时“消失”。它引用的对象(TextBox
的实例,以前称为textbox1
)仍然存在,现在有一个存储在Controls
GroupBox1
集合中的引用
显然,你出于某种原因创建了TextBox
并希望再次获得它 - 你可以。您需要做的就是查看GroupBox1.Controls
集合。假设你开始时它是空的,你可以依赖这样一个事实:那里的所有子对象都是你创建的TextBox
控件。
现在,如果GroupBox1
包含除动态创建的控件之外的其他内容,则还有其他选项可用于存储和检索动态文本框。您可以在类级别(例如,在表单上)定义和创建集合,并在Button1_Click
中将每个文本框添加到该集合中。
有各种各样的方法,但希望这能让你指出正确的方向。
答案 1 :(得分:1)
TextBox
只是一个.NET类,你的textbox1对象就像该类的任何其他实例一样,它由公共语言运行时(CLR)保存在内存中。 .NET框架为您处理这个问题(就像任何其他对象一样)。当你打电话:
GroupBox1.Controls.Add(textbox1)
框架使用该内存位置(指向文本框对象)并从内存地址内容创建一个新的文本框。
答案 2 :(得分:1)
这是一个非常模糊的问题,至少有5个正确的答案。让我们从明显的答案开始:
不那么明显的,旨在最大限度地混淆: