在运行时在VB.NET中添加一个控件(或控件)

时间:2011-03-30 14:30:30

标签: .net vb.net winforms controls

这个问题是关于VB.NET的。我对这个问题很新手,所以请原谅我,如果你觉得这个问题不是什么疯狂的事情。无论如何,我一直在创建一个简单的Windows地址簿表单应用程序。我们都知道一个人可以拥有一个或多个地址,其中一对多关系成立。所以,我的应用程序还必须能够编辑这些地址中的每一个(顺便说一下,我的应用程序使用Access数据库,这真的很糟糕,但这是我的任务的一部分),我已经想过使用一个控制数组(只是就像在PHP中,但它显然从未在.NET中工作过)来编辑它们。我该怎么做呢?我已经浏览了网络上的每个论坛,但似乎无法找到足够的答案。

谢谢!

4 个答案:

答案 0 :(得分:6)

作为.NET框架的一部分,Vb.net有一个名为FlowLayoutPanel的控件可以满足您的需求。此控件用于保存添加到表单的控件中的订单,而无需手动定位每个控件。

你唯一要做的就是在表单中创建一个你需要的控件的新实例,让我们称之为EditControl,并将控件的新实例添加到FlowLayoutPanel控件。

这样的事情:

dim tmpC as new EditControl()
containerControl.Controls.Add(tmpC)

这样,FlowLayoutPanel控件将显示您在表单上添加的EditControls。

假设containerControl被声明为FlowLayoutPanel。

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

答案 1 :(得分:2)

我不确定我理解这个问题。你究竟想做什么?你有什么?您已尝试过什么不起作用?

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

首先,您需要创建一个控件类的实例。例如,TextBox类。您可以通过声明类型为TextBox的变量并调用构造函数来执行此操作:

Dim txt As New TextBox()

第二次,您可能想要设置刚刚创建的文本框的某些属性。这些属性可以使用“属性”窗口在“设计视图”中设置。例如:

txt.Text = "Default text"

第三次,您需要将该控件添加到表单的Controls collection。这就是控件实际显示在窗体上的原因。 (另请注意,您不仅可以将控件添加到Form。您可以将其添加到任何容器样式控件,例如Panel或{ {1}}。)例如:

GroupBox

但是,由于您正在创建一个与Access绑定的基于数据的应用程序,因此您应该考虑使用data-bound controls,这会让您的生活更加简单。他们可以自动将其内容与数据库中保存的信息同步。

答案 2 :(得分:0)

您不需要控制数组甚至以编程方式添加它们,您只需要绑定数据源属性/字段/列/表单上的控件,并具有滚动或分页地址记录的机制。如何执行此操作将在很大程度上取决于您希望向用户呈现的UI类型。

答案 3 :(得分:0)

看看这个。 http://shashwats-softwares.com/2016/01/29/creating-controls-at-runtime-in-vb-net/

dim btn as new system.windows.forms.buttons
btn.text="Click Me"
Me.controls.add(btn)