Verberg Checkbox vanuit een module

Status
Niet open voor verdere reacties.

ongenae

Gebruiker
Lid geworden
20 okt 2010
Berichten
124
Hallo

Dit is wat ik graag had gewild.
Ik heb een paar checkboxen staan op mijn formulier met naam "Volledigewandenbeheer"
als ik 1 van de checkboxen aan vink moeten de ander verdwijnen (alsook hun label).

Omdat er hier veeeeeel code voor nodig is (meer copy paste dan wat anders) ben ik van plan om dit in een module te steken en dan in mijn formulier die module aan te roepen.

Dit is wat ik heb voor 1 checkbox (ik heb er 9 staan op mijn formulier):


In mijn formulier Volledigewandenbeheer:

Code:
 Private Sub chkboxhswg_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles chkboxhswg.CheckedChanged

        Call CONTROLECECKBOX()

    End Sub


En dit als module VWCHEKBOX:

Code:
Module VWCHEKBOX

    Public Sub CONTROLECECKBOX()


        My.Forms.Volledigewandenbeheer.chkboxhswgp.Visible = True
        My.Forms.Volledigewandenbeheer.lblhswgp.Visible = True
        My.Forms.Volledigewandenbeheer.chkboxhswgp.Visible = True
        My.Forms.Volledigewandenbeheer.lblhswgp.Visible = True
        My.Forms.Volledigewandenbeheer.chkboxhswr.Visible = True
        My.Forms.Volledigewandenbeheer.lblhswr.Visible = True
        My.Forms.Volledigewandenbeheer.chkboxhswiso.Visible = True
        My.Forms.Volledigewandenbeheer.lblhswiso.Visible = True
        My.Forms.Volledigewandenbeheer.chkboxhswmr.Visible = True
        My.Forms.Volledigewandenbeheer.lblhswmr.Visible = True
        My.Forms.Volledigewandenbeheer.chkboxfswg.Visible = True
        My.Forms.Volledigewandenbeheer.lblfswg.Visible = True
        My.Forms.Volledigewandenbeheer.chkboxfswc.Visible = True
        My.Forms.Volledigewandenbeheer.lblfswc.Visible = True
        My.Forms.Volledigewandenbeheer.chkboxbswr.Visible = True
        My.Forms.Volledigewandenbeheer.lblbswr.Visible = True
        My.Forms.Volledigewandenbeheer.chkboxbswg.Visible = True
        My.Forms.Volledigewandenbeheer.lblbswg.Visible = True

        If My.Forms.Volledigewandenbeheer.chkboxhswg.Checked = True Then

            My.Forms.Volledigewandenbeheer.chkboxhswgp.Visible = True
            My.Forms.Volledigewandenbeheer.lblhswgp.Visible = True
            My.Forms.Volledigewandenbeheer.chkboxhswgp.Visible = False
            My.Forms.Volledigewandenbeheer.lblhswgp.Visible = False
            My.Forms.Volledigewandenbeheer.chkboxhswr.Visible = False
            My.Forms.Volledigewandenbeheer.lblhswr.Visible = False
            My.Forms.Volledigewandenbeheer.chkboxhswiso.Visible = False
            My.Forms.Volledigewandenbeheer.lblhswiso.Visible = False
            My.Forms.Volledigewandenbeheer.chkboxhswmr.Visible = False
            My.Forms.Volledigewandenbeheer.lblhswmr.Visible = False
            My.Forms.Volledigewandenbeheer.chkboxfswg.Visible = False
            My.Forms.Volledigewandenbeheer.lblfswg.Visible = False
            My.Forms.Volledigewandenbeheer.chkboxfswc.Visible = False
            My.Forms.Volledigewandenbeheer.lblfswc.Visible = False
            My.Forms.Volledigewandenbeheer.chkboxbswr.Visible = False
            My.Forms.Volledigewandenbeheer.lblbswr.Visible = False
            My.Forms.Volledigewandenbeheer.chkboxbswg.Visible = False
            My.Forms.Volledigewandenbeheer.lblbswg.Visible = False

        Else
        End If

    End Sub


End Module

Hij toont wel die msgbox maar voor de acties eronder niet uit.
Als ik de acties rechtstreeks in mijn formulier plaats werkt het perfect. Ik snap het niet echt.

Hulp en/of een efficiëntere manier van werken zijn altijd welkom.
 
Als je één checkbox aanklikt moeten alle anderen verdwijnen? Dan kun je die andere toch niet meer aanklikken? :confused:

Desalniettemin zou ik alle CheckBoxen samen met de bijbehorende Labels in een aparte Panel plaatsen.
Dan staan ze gelijk gegroepeerd. Zoiets dus:

31083136.jpg


En dan deze code gebruiken:

[cpp]Private Sub CheckBox1_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CheckBox1.CheckedChanged, CheckBox2.CheckedChanged, _
CheckBox3.CheckedChanged, _
CheckBox4.CheckedChanged, _
CheckBox5.CheckedChanged, _
CheckBox6.CheckedChanged, _
CheckBox7.CheckedChanged, _
CheckBox8.CheckedChanged, _
CheckBox9.CheckedChanged

For Each item As Control In Me.Controls
If TypeOf item Is Panel Then
Dim Panel As Panel = item
If Not Panel.Controls.Contains(sender) Then
Panel.Visible = Not sender.Checked
End If
End If
Next
End Sub[/cpp]
 
Laatst bewerkt:
Zal iets gelijkaardigs eens proberen.
Al mijn chekboxen staan in een tabcontrol.

Het is de bedoeling dat je maar 1 checkbox kan aanvinken, daarom verberg ik de rest als er 1tje is geslecteerd. Bij unchecken moeten de andere terug zichtbaar worden.

Ik laat nog iets weten als ik het heb geprobeerd.
 
In dat geval kun je 'False' vervangen door Not sender.Checked. ;)
Heb ik nu aangepast in de code.
 
Het is blijkbaar toch niet echt wat ik zoek.
Hij verbergt alle checkboxen op mijn formulier.

Ik heb namelijk een tabcontrol met 3 bladen.
blad 1 : 5 checkboxen
blad 2 : 2 checkboxen
blad 3 : 2 checkboxen

Ik had graag gewild dat wanneer je gelijk welk een van de 9 checkboxen aanvinkt de andere onzichtbaar worden, zodat je altijd maar 1 iets kan selecteren.
De aangevinkt zelf moet natuurlijk zichtbaar blijven.
Wanneer je die weer af vinkt moeten al de rest terug zichtbaar worden.

Dit is wat ik had in VBA Access, is er geen snellere oplossing voor?

Code:
Private Sub bswg_AfterUpdate()
If bswg.Value = True Then
Me!hswgp.Enabled = False
Me!hswr.Enabled = False
Me!hswiso.Enabled = False
Me!hswmr.Enabled = False
Me!fswg.Enabled = False
Me!fswc.Enabled = False
Me!bswr.Enabled = False
Me!hswg.Enabled = False
Else
Me!hswgp.Enabled = True
Me!hswr.Enabled = True
Me!hswiso.Enabled = True
Me!hswmr.Enabled = True
Me!fswg.Enabled = True
Me!fswc.Enabled = True
Me!bswr.Enabled = True
Me!hswg.Enabled = True
End If
End Sub
Private Sub bswr_AfterUpdate()
If bswr.Value = True Then
Me!hswgp.Enabled = False
Me!hswr.Enabled = False
Me!hswiso.Enabled = False
Me!hswmr.Enabled = False
Me!fswg.Enabled = False
Me!fswc.Enabled = False
Me!hswg.Enabled = False
Me!bswg.Enabled = False
Else
Me!hswgp.Enabled = True
Me!hswr.Enabled = True
Me!hswiso.Enabled = True
Me!hswmr.Enabled = True
Me!fswg.Enabled = True
Me!fswc.Enabled = True
Me!hswg.Enabled = True
Me!bswg.Enabled = True
End If
End Sub
Private Sub fswc_AfterUpdate()
If fswc.Value = True Then
Me!hswgp.Enabled = False
Me!hswr.Enabled = False
Me!hswiso.Enabled = False
Me!hswmr.Enabled = False
Me!fswg.Enabled = False
Me!hswg.Enabled = False
Me!bswr.Enabled = False
Me!bswg.Enabled = False
Else
Me!hswgp.Enabled = True
Me!hswr.Enabled = True
Me!hswiso.Enabled = True
Me!hswmr.Enabled = True
Me!fswg.Enabled = True
Me!hswg.Enabled = True
Me!bswr.Enabled = True
Me!bswg.Enabled = True
End If
End Sub
Private Sub fswg_AfterUpdate()
If fswg.Value = True Then
Me!hswgp.Enabled = False
Me!hswr.Enabled = False
Me!hswiso.Enabled = False
Me!hswmr.Enabled = False
Me!hswg.Enabled = False
Me!fswc.Enabled = False
Me!bswr.Enabled = False
Me!bswg.Enabled = False
Else
Me!hswgp.Enabled = True
Me!hswr.Enabled = True
Me!hswiso.Enabled = True
Me!hswmr.Enabled = True
Me!hswg.Enabled = True
Me!fswc.Enabled = True
Me!bswr.Enabled = True
Me!bswg.Enabled = True
End If
End Sub
Private Sub hswg_AfterUpdate()
If hswg.Value = True Then
Me!hswgp.Enabled = False
Me!hswr.Enabled = False
Me!hswiso.Enabled = False
Me!hswmr.Enabled = False
Me!fswg.Enabled = False
Me!fswc.Enabled = False
Me!bswr.Enabled = False
Me!bswg.Enabled = False
Else
Me!hswgp.Enabled = True
Me!hswr.Enabled = True
Me!hswiso.Enabled = True
Me!hswmr.Enabled = True
Me!fswg.Enabled = True
Me!fswc.Enabled = True
Me!bswr.Enabled = True
Me!bswg.Enabled = True
End If
End Sub
Private Sub hswgp_AfterUpdate()
If hswgp.Value = True Then
Me!hswg.Enabled = False
Me!hswr.Enabled = False
Me!hswiso.Enabled = False
Me!hswmr.Enabled = False
Me!fswg.Enabled = False
Me!fswc.Enabled = False
Me!bswr.Enabled = False
Me!bswg.Enabled = False
Else
Me!hswg.Enabled = True
Me!hswr.Enabled = True
Me!hswiso.Enabled = True
Me!hswmr.Enabled = True
Me!fswg.Enabled = True
Me!fswc.Enabled = True
Me!bswr.Enabled = True
Me!bswg.Enabled = True
End If
End Sub
Private Sub hswiso_AfterUpdate()
If hswiso.Value = True Then
Me!hswgp.Enabled = False
Me!hswr.Enabled = False
Me!hswg.Enabled = False
Me!hswmr.Enabled = False
Me!fswg.Enabled = False
Me!fswc.Enabled = False
Me!bswr.Enabled = False
Me!bswg.Enabled = False
Else
Me!hswgp.Enabled = True
Me!hswr.Enabled = True
Me!hswg.Enabled = True
Me!hswmr.Enabled = True
Me!fswg.Enabled = True
Me!fswc.Enabled = True
Me!bswr.Enabled = True
Me!bswg.Enabled = True
End If
End Sub
Private Sub hswmr_AfterUpdate()
If hswmr.Value = True Then
Me!hswgp.Enabled = False
Me!hswr.Enabled = False
Me!hswiso.Enabled = False
Me!hswg.Enabled = False
Me!fswg.Enabled = False
Me!fswc.Enabled = False
Me!bswr.Enabled = False
Me!bswg.Enabled = False
Else
Me!hswgp.Enabled = True
Me!hswr.Enabled = True
Me!hswiso.Enabled = True
Me!hswg.Enabled = True
Me!fswg.Enabled = True
Me!fswc.Enabled = True
Me!bswr.Enabled = True
Me!bswg.Enabled = True
End If
End Sub
Private Sub hswr_AfterUpdate()
If hswr.Value = True Then
Me!hswgp.Enabled = False
Me!hswg.Enabled = False
Me!hswiso.Enabled = False
Me!hswmr.Enabled = False
Me!fswg.Enabled = False
Me!fswc.Enabled = False
Me!bswr.Enabled = False
Me!bswg.Enabled = False
Else
Me!hswgp.Enabled = True
Me!hswg.Enabled = True
Me!hswiso.Enabled = True
Me!hswmr.Enabled = True
Me!fswg.Enabled = True
Me!fswc.Enabled = True
Me!bswr.Enabled = True
Me!bswg.Enabled = True
End If
End Sub
 
Gebruik je VBA :confused:

Zo ja, dan staat-ie verkeerd.
 
Nee, nu ben ik bezig in VB.net
Maar vroeger heb ik ook al zoiets dergelijks gedaan in VBA.

Ik heb wel degelijk de code nodig voor VB.net.
 
OK. Maar wat doet mijn code precies verkeerd en wat zou je graag wél willen? ;)
 
Dat als ik checkbox 1 aanvink dat chekcbox 2 en 3 verdwijnen samen met hun labels. (alles van chekcbox 1 moet uiteraard zichtbaar blijven).

Als ik chekbox 1 terug afvink moet alles van 2 en 3 terug zichtbaar worden.

Zo het zelfde voor de ander checkboxen als ik ze aan en af vink.
Zodat er altijd maar 1 iets aangevinkt kan worden.
 
OK, maar er waren toch meer dan 3 checkboxen? :confused:
 
ja maar het principe zal het zelfde blijven, dit is als wijze van voorbeeld.
Het zijn er in totaal 9 die zich in 3 verschillende tabbladen bevinden in een tabcontrol.
 
Dan kun je eigenlijk dezelfde grap uithalen als in post #2.
Maar dan:

[CPP]For Each item As Control In TabControl1.TabPages(0).Controls
If TypeOf item Is CheckBox Then
''// etc.
End If
Next[/CPP]

Dit is voor het eerste tabblad.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan