我正在创建一个需要动态加载控件的应用程序(精确按钮)。这些按钮完全相同,因此问题不在于以编程方式创建控件,而是以某种方式使它们工作。每个按钮都应打开一个表单,表单基于按钮中的一些数据。我希望所有按钮都使用一个事件处理程序,并根据它包含的数据打开表单。有没有办法这样做?我还不知道这些表格的类型,因此我无法使用预先定义的"选择案例"或任何会限制可能性的东西。
另一个问题是我希望安装一些表格(模块)和#34;独立。有没有办法让这成为可能?我相信可以使用dll完成,但我不确定。有没有相关的信息,我一直在寻找,但一无所获。
答案 0 :(得分:1)
关于你的第一个问题:你可以在代码中创建按钮;以下问题的答案应该足以让你开始(这是C#,但原则是相同的):
简而言之:
使用AddHandler
为每个按钮添加事件处理程序。例如:
AddHandler myButton.Click, Sub(sender, e)
' Do something
End Sub
(关于你的第二个问题:1。我不清楚你在问什么,2。你不应该在同一个问题中提出两个问题。我建议你为此开一个新的SO问题并尝试更清楚地解释您的要求。)
答案 1 :(得分:0)
也许我对你的答案不太了解......但对于你的按钮:
1)创建一个自定义控件,继承Button控件,并添加用于创建表单的属性。
2)在您的eventHandler引用的Sub中,第一个参数是引发事件的控件(按钮),因此您可以使用它自己的属性来创建表单...
答案 2 :(得分:0)
加入Heinzi的帖子:
保留您创建的按钮名称列表,以便与AddHandler()一起使用。
此代码并非完全符合要点,但它显示了如何在运行时使用AddHandler():
' hook TextChanged/CheckedChanged for dirty logic
Dim chk As CheckBox
Dim rdo As RadioButton
For Each c As Control In FormDataControls
If c.Name.StartsWith("chk") Then
chk = c
AddHandler chk.CheckedChanged, AddressOf SetDirty
ElseIf c.Name.StartsWith("rdo") Then
rdo = c
AddHandler rdo.CheckedChanged, AddressOf SetDirty
Else
AddHandler c.TextChanged, AddressOf SetDirty
End If
Next
FormDataControls是我要定位的控件列表。在我的例子中,我使用Tag属性来指定数据控件。