Hallo zusammen,
ich habe ein folgendes Problem.
Mein Ziel an der Sache ist, soweit wie möglich dynamisch zu bauen, um später die mögliche Arbeiten zu ersparen. Da es sehr viel Aufwand ist, einzel n zu schreiben. Warum nicht gleich dynmaisch?
Hier mal der Ist-Zustand:
Ich habe an einer Groupbox mehrere Checkboxen. Es geht darum nur eine auszuwählen, die zu einer Gruppe gehört, auszublenden, aber die andere Gruppe nicht auszublenden, da es als Zusatz sein könnte.
Die Objekte werden von der XML-Datei geladen und in die Groupbox bestückt mit Namen. Das funktioniert alles soweit.
Bsp.:
1_Checkbox_AnlageA
1_Checkbox_AnlageB
1_Checkbox_AnlageC
1_Checkbox_AnlageD
1_Checkbox_AnlageE
1_Checkbox_AnlageF
1_Checkbox_AnlageG
1_Checkbox_AnlageH
1_Checkbox_AnlageI
1_Checkbox_AnlageJ
2_Checkbox_VerbindungA
2_Checkbox_VerbindungB
2_Checkbox_VerbindungC
2_Checkbox_VerbindungD
3_Checkbox_Eskalation
4_Checkbox_Kundenberatung
Ich habe soweit hinbekommen, dass die XML richtig ausgelesen wird und in die richtige Postion zuzuweisen. Alles Prima.
Hier mein Code:
''' <summary>
'''
''' </summary>
''' <param name="strXMLName">Name der XML-Datei zum Auslesen</param>
''' <param name="strForm">Name der Form, wo es platziert werden soll</param>
''' <param name="strGroupbox">Name der Groupbox, wo die Elemente
' eingelesen werden soll.</param>
''' <returns></returns>
''' <remarks></remarks>
Function XMLReading(strXMLName As String, strForm As Form, strGroupbox _
As GroupBox)
arrAnlagen_App = New ArrayList
Dim xr As XmlReader = XmlReader.Create(Application.StartupPath & _
"\DATA\Anlagen\" & strXMLName & ".xml")
Do While xr.Read()
Dim cbx As New CheckBox
Dim LocalX, LocalY As Integer
If xr.Name = "Anlagenelemente" Then
cbx.Name = xr.GetAttribute(1)
cbx.Text = xr.GetAttribute(3)
LocalX = xr.GetAttribute(4)
LocalY = xr.GetAttribute(5)
cbx.TabIndex = xr.GetAttribute(6)
cbx.AutoSize = True
cbx.Location = New Point(LocalX, LocalY)
With cbx
AddHandler cbx.Click, AddressOf Checkbox_Click
strGroupbox.Controls.Add(cbx)
grp = strGroupbox
End With
End If
Loop
For Each Gruppierung As Control In strGroupbox.Controls
arrAnlagen_App.Add(Gruppierung)
Next
strForm.Show()
Return strForm
End Function
Private Sub Checkbox_Click(ByVal sender As Object, ByVal e As EventArgs)
Dim Myckb As CheckBox
Myckb = CType(sender, CheckBox)
Dim Test As New Funktion_Anlagen
Test.EMABMA(arrAnlagen_App)
End Sub
End Class Der nächste Schritt den ich gebaut habe ist die Checkboxen in einen Arraylist zuzuweisen und in einer Klasse zu übergeben.
Mit For Each Befehl kann ich, wenn eine ausgewählt wurde, ausblenden, aber möchte gleich die anderen mit ausblenden, jedoch die Verbindung noch eingebledet lassen zur optiionalen auswahl. Habt ihr vielleicht ne Ahnung wie man genau in einer Klasse definiert?
Hie rmal meinen Code:
Function Anlagen(ByVal arrAPP As ArrayList)
Dim ControlAnlagen As New ArrayList
Dim intCount As Integer = 0
ControlAnlagen = arrAPP
For Each Pruef_Felder As System.Windows.Forms.CheckBox In arrAPP
Select Case Pruef_Felder.Name.Substring(0, 1).ToString
Case "1"
If Pruef_Felder.Checked = True Then
Pruef_Felder.Enabled = True
intCount = intCount & 1
Else
Pruef_Felder.Enabled = False
End If
Case "2"
End Select
Next
If intCount = 0 Then
For Each Pruef_Pflichtfelder As System.Windows.Forms.CheckBox In _
arrAPP
Pruef_Pflichtfelder.Enabled = True
Next
End If
End Function Leider weiss ich im Moment nicht weiter, wie ich es genau definieren soll. Vielleicht kann mir jemand den Tip dazu geben.
Wenn was unklar ist, einfach fragen. Ich beiße nicht
Für eure Hilfe oder Tipps wäre ich dankbar
|