Public Class frmDynCtl
'Liste der Parameter
Dim pil As New List(Of ParameterInfo)
Private Sub frmDynCtl_Load(sender As System.Object, _
e As System.EventArgs) Handles MyBase.Load
Dim control_height As Integer = 50
Dim control_size As New Size(150, 30)
Dim label_size As New Size(80, 30)
'Parameter_Infos erstellen und auflisten
pil.Add(New ParameterInfo _
("TBO1_Name", ParameterInfo.ParamType.Text, _
"TBO1_Value", _
ParameterInfo.ControlType.TextBox, _
New Point(100, 20), control_size, _
New Point(10, 20), label_size))
pil.Add(New ParameterInfo _
("TBO2_Name", ParameterInfo.ParamType.Double, 5247.15, _
ParameterInfo.ControlType.TextBox, _
New Point(100, 20 + control_height), control_size, _
New Point(10, 20 + control_height), label_size))
pil.Add(New ParameterInfo _
("LBO1_Name", ParameterInfo.ParamType.TextArray, _
New String() {"LBO1_Item1", "LBO1_Item2", "LBO1_Item3"}, _
ParameterInfo.ControlType.ListBox, _
New Point(100, 20 + control_height * 2), control_size, _
New Point(10, 20 + control_height * 2), label_size))
pil.Add(New ParameterInfo _
("CBO1_Name", ParameterInfo.ParamType.DoubleArray, _
New Double() {10.7, 12.65, 3.561}, _
ParameterInfo.ControlType.Combobox, _
New Point(100, 20 + control_height * 3), control_size, _
New Point(10, 20 + control_height * 3), label_size))
pil.Add(New ParameterInfo _
("BTN1_Name", ParameterInfo.ParamType.Text, "BTN1_Value", _
ParameterInfo.ControlType.Button, _
New Point(100, 20 + control_height * 4), control_size, _
New Point(10, 20 + control_height * 4), label_size))
'Das ContainerControl
Dim pan As New Panel With _
{.Parent = Me, .Top = 10, _
.Width = 300, .Height = control_height * 5, _
.BackColor = Color.LightGray}
'benötigte Controls für die ParameterInfos erstellen
'und mit den Eventhandler-Routinen kombinieren
For Each pi As ParameterInfo In pil
Dim ctl As Control = pi.CreateControl(pan)
If TypeOf ctl Is ComboBox Then
Dim cbo As ComboBox = DirectCast(ctl, ComboBox)
AddHandler cbo.SelectedIndexChanged, _
AddressOf Selectedindex_changed
ElseIf TypeOf ctl Is TextBox Then
Dim tbo As TextBox = DirectCast(ctl, TextBox)
AddHandler tbo.TextChanged, AddressOf text_changed
Else
AddHandler ctl.Click, AddressOf Ctl_click
End If
Next pi
End Sub
Public Sub Ctl_click(ByVal sender As Object, e As EventArgs)
Dim ctl As Control = DirectCast(sender, Control)
MsgBox(ctl.Name & " wurde gedrückt")
End Sub
Public Sub Selectedindex_changed(ByVal sender As Object, e As EventArgs)
Dim cbo As ComboBox = DirectCast(sender, ComboBox)
MsgBox("Index " & cbo.SelectedIndex.ToString & " wurde ausgewählt")
End Sub
Public Sub text_changed(ByVal sender As Object, e As EventArgs)
Dim tbo As TextBox = DirectCast(sender, TextBox)
MsgBox("Neuer Text: " & tbo.Text)
End Sub
End Class
Beitrag wurde zuletzt am 28.05.15 um 06:25:43 editiert. |