btl-norway Skrevet 12. oktober 2008 Skrevet 12. oktober 2008 (endret) Jeg skal automatisk checke 5 checkboxer. Jeg vil gjerne skrive koden slik. Dim i As Integer For i = 1 To 5 CheckBox + i + .Checked = True Next i Dette går ikke. Finnes det en løsning på dette? Endret 12. oktober 2008 av btl-norway
aadnk Skrevet 12. oktober 2008 Skrevet 12. oktober 2008 (endret) Det finnes mange måter. Her er et lite utvalg: Public Class Form1 ' Den enkleste metoden er nok imidlertid å gruppere kontrollene manuelt (må initialiseres i Form_Load) Private YourGroup() As CheckBox Private Sub btnSet_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnSet.Click ' (1) Avkrysser alle sjekkbokser som starter med en gitt streng For Each Item As Control In Me.Controls If TypeOf Item Is CheckBox Then With DirectCast(Item, CheckBox) ' Man kan fint bruke andre identifikasjonsmetoder (Hint: Tag-egenskapen) If .Name.StartsWith("CheckBox") Then .Checked = True End If End With End If Next ' (2) Som ovenfor, men bruker her LINQ (inkludert i VB.NET 2008) For Each CheckBox In Me.Controls.OfType(Of CheckBox)() If CheckBox.Name.StartsWith("CheckBox") Then CheckBox.Checked = True End If Next ' (3) Om disse sjekkboksene må refereres til ofte, kunne det vært en god idè å "refactor"-e ' utvelgelsen til en egen prosedyre (og evt. lagre resultatet i en variabel). For Each CheckBox In ControlGroup(Of CheckBox)("CheckBox") CheckBox.Checked = True Next ' (4) Manuel gruppe For Each CheckBox In YourGroup CheckBox.Checked = True Next End Sub Public Function ControlGroup(Of T As Control)(ByVal GroupName As String) As IEnumerable(Of T) ' Dersom man ikke har tilgang til LINQ må man bruke metode (1) internt Return Me.Controls.OfType(Of T)().Where(Function(x) x.Name.StartsWith(GroupName)) End Function Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load ' Kan ikke plasseres øverst da kontrollene ikke er initialisert på det tidspunktet YourGroup = New CheckBox() {CheckBox1, CheckBox2, CheckBox3, CheckBox4, CheckBox5} End Sub End Class Endret 12. oktober 2008 av aadnk
btl-norway Skrevet 12. oktober 2008 Forfatter Skrevet 12. oktober 2008 Jeg er ikke fornøyd med emnetittelen. Noen bedre forslag på emnetittel?
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå