Hi,
ich bin mir fast sicher, dass meine Frage ein Klax für die Experten ist. Mich hat es aber bisher ziemlichen Frust gekostet !
Also .... ich habe eine Ereignisprozedur, die auf einen Button und einige CheckBoxes reagiert. Wenn der Button "Reshow" angeklickt wird oder wenn ich eine der Checkboxes ändere, dann soll ein bestimmtes Display neu erstellt werden.
Soweit so gut.
Jetzt habe ich aber eine Checkbox "All", die macht ein bissl mehr als nur das. Dies setzt alle Checkboxes auf "Checked" bzw. auf "not Checked". Dazu muss ich abfragen, ob DIESE Check Box geändert wurde. Das geht mit DirectCast(sender, Checkbox) und der Abfrage auf "is chkAll".
Auch noch gut.
Wenn ich jetzt aber cmdReshow klicke, dann scheitert das, weil der DirectCast (sender, Checkbox) nicht mehr funktioniert.
NIcht mehr gut.
Ich muss also den Typ der Control abfragen, welche das Event ausgelöst hat.
Ich habe jetzt schon lange experimentiert ... aber nichts funktioniert. Hier mein jüngstes Coding:
Mit
Wie frage ich denn den Type dieser vermaledeiten Control ab ?
Ich hoffe, ihr könnt mir wir immer nachsichtig auf die Sprünge helfen!
LG
Peter
ich bin mir fast sicher, dass meine Frage ein Klax für die Experten ist. Mich hat es aber bisher ziemlichen Frust gekostet !
Also .... ich habe eine Ereignisprozedur, die auf einen Button und einige CheckBoxes reagiert. Wenn der Button "Reshow" angeklickt wird oder wenn ich eine der Checkboxes ändere, dann soll ein bestimmtes Display neu erstellt werden.
Soweit so gut.
Jetzt habe ich aber eine Checkbox "All", die macht ein bissl mehr als nur das. Dies setzt alle Checkboxes auf "Checked" bzw. auf "not Checked". Dazu muss ich abfragen, ob DIESE Check Box geändert wurde. Das geht mit DirectCast(sender, Checkbox) und der Abfrage auf "is chkAll".
Auch noch gut.
Wenn ich jetzt aber cmdReshow klicke, dann scheitert das, weil der DirectCast (sender, Checkbox) nicht mehr funktioniert.
NIcht mehr gut.
Ich muss also den Typ der Control abfragen, welche das Event ausgelöst hat.
Ich habe jetzt schon lange experimentiert ... aber nichts funktioniert. Hier mein jüngstes Coding:
VB.NET-Quellcode
- Private Sub cmdReshow_Click(sender As Object, e As EventArgs) Handles cmdReshow.Click,
- chkShowConflicts.CheckedChanged,
- chkShowWarnings.CheckedChanged,
- chkShowMissmatches.CheckedChanged,
- chkShowTempAtObjects.CheckedChanged,
- chkAll.CheckedChanged
- If blnCheckDisabled Then Exit Sub 'Leave proc if disabled, to avoid recursion
- lblMessage.Text = ""
- 'Process chkAll.CheckChanged
- Dim myCtrl As Type = sender.GetType 'Get the type of control that had fired
- If TypeOf myCtrl Is CheckBox Then 'Ein Ausdruck vom Typ "Type kann nie vom Typ "Checkbox sein"
- Dim myCheck As CheckBox = DirectCast(sender, CheckBox) '<--- crashes when cmdReshow is clicked !
- If myCheck Is chkAll Then 'Select / Deselect all check boxes
- blnCheckDisabled = True 'Run check disabled
- chkShowConflicts.Checked = chkAll.Checked 'Set checkboxes ....
- chkShowWarnings.Checked = chkAll.Checked
- chkShowMissmatches.Checked = chkAll.Checked
- chkShowTempAtObjects.Checked = chkAll.Checked
- blnCheckDisabled = False 'Reenable check
- End If
- End If
- 'Common processing
- chkShowConflicts.ForeColor = If(chkShowConflicts.Checked, SystemColors.ControlText, Color.Red)
- chkShowWarnings.ForeColor = If(chkShowWarnings.Checked, SystemColors.ControlText, Color.Red)
- chkShowMissmatches.ForeColor = If(chkShowMissmatches.Checked, SystemColors.ControlText, Color.Red)
- chkShowTempAtObjects.ForeColor = If(chkShowTempAtObjects.Checked, SystemColors.ControlText, Color.Red)
- DisplayObjectsList() 'Redisplay object list
- UpdateObjectList() 'Update objects in list
- End Sub
Mit
TypeOf myCtrl Is CheckBox
geht es also nicht ... auch nicht mit Gettype()
etc. etc. Wie frage ich denn den Type dieser vermaledeiten Control ab ?
Ich hoffe, ihr könnt mir wir immer nachsichtig auf die Sprünge helfen!
LG
Peter
Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von „Peter329“ ()