在运行时在VB.NET中添加控件

在运行时在VB.NET中添加控件,.net,vb.net,winforms,controls,.net,Vb.net,Winforms,Controls,这个问题是关于VB.NET的。我在这方面是个新手,所以如果你觉得这个问题简直是疯了,请原谅我。无论如何,我一直在创建一个简单的Windows通讯簿表单应用程序。我们都知道一个事实,一个人可以有一个或多个地址,其中一对多的关系是正确的。因此,我的应用程序还必须能够编辑这些地址中的每一个(顺便说一句,我的应用程序使用一个Access数据库,这真的很糟糕,但这是我任务的一部分),我已经考虑过使用一个控件数组(就像在PHP中一样,但在.NET中显然不起作用)来编辑它们。我该如何实施这一点?我在网上搜索了

这个问题是关于VB.NET的。我在这方面是个新手,所以如果你觉得这个问题简直是疯了,请原谅我。无论如何,我一直在创建一个简单的Windows通讯簿表单应用程序。我们都知道一个事实,一个人可以有一个或多个地址,其中一对多的关系是正确的。因此,我的应用程序还必须能够编辑这些地址中的每一个(顺便说一句,我的应用程序使用一个Access数据库,这真的很糟糕,但这是我任务的一部分),我已经考虑过使用一个控件数组(就像在PHP中一样,但在.NET中显然不起作用)来编辑它们。我该如何实施这一点?我在网上搜索了所有可能的论坛,但似乎找不到足够的答案


谢谢

您不需要控件数组,甚至不需要以编程方式添加它们,只需要绑定数据源属性/字段/列/表单上的控件,并具有滚动或分页地址记录的机制。如何做到这一点在很大程度上取决于您希望向用户展示什么样的UI。

我不确定我是否理解这个问题。你到底想干什么?你已经有什么了?你已经试过哪些不起作用的

仅从标题判断,您希望在运行时向窗体添加另一个控件。这很简单

首先,需要创建控件类的实例。例如,
文本框
类。您可以通过声明类型为
TextBox
的变量并调用构造函数来实现这一点:

Dim txt As New TextBox()
其次,您可能需要设置刚刚创建的文本框的一些属性。这些属性与您可以使用“属性”窗口在“设计”视图中设置的属性相同。例如:

txt.Text = "Default text"
myForm.Controls.Add(txt)
第三个,您需要将该控件添加到表单的。这就是控件实际显示在窗体上的原因。(还请注意,您不仅限于将控件添加到
表单
。您可以将其添加到任何容器样式控件,例如
面板
组框
)例如:

txt.Text = "Default text"
myForm.Controls.Add(txt)


然而,由于您正在创建一个与Access绑定的基于数据的应用程序,因此您确实应该研究如何使用它,这使您的生活更加简单。它们可以自动将其内容与保存在数据库中的信息同步。

Vb.net作为.net framework的一部分,有一个名为FlowLayoutPanel的控件,可以根据需要执行操作。此控件用于保存添加到表单的控件中的订单,而无需手动定位每个控件

您只需在表单中创建所需控件的新实例,我们称之为EditControl,并将该控件的新实例添加到FlowLayoutPanel控件中

大概是这样的:

dim tmpC as new EditControl()
containerControl.Controls.Add(tmpC)
使用此选项,FlowLayoutPanel控件将显示您在表单上添加的所有EditControl

假设containerControl声明为FlowLayoutPanel

但是如果可以,最好的方法是使用连接到数据集的网格控件。

看看这个。


请注意,除此之外,他可能还想创建一个自定义控件来包含一个地址的所有字段,而不是为每个字段向面板添加一个控件。这回答了您的实际问题,但我想您可能会问如何创建主/详细表单-看看这个示例