Vereinfachung im Code möglich?

  • VB.NET

Es gibt 8 Antworten in diesem Thema. Der letzte Beitrag () ist von LetMeExplain1997.

    Vereinfachung im Code möglich?

    Und zwar bin ich noch ziemlicher Einsteiger ;) Ich kann zwar schon einiges, bin aber noch nicht 100% vertraut mit VB :))
    Also folgende Frage habe ich: Kann ich folgenden Code irgendwie "Codesparend" oder einfacher schreiben?

    VB.NET-Quellcode

    1. Private Sub Form2_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    2. Label3.Hide()
    3. Label4.Hide()
    4. Label5.Hide()
    5. Label6.Hide()
    6. Label7.Hide()
    7. TextBox3.Hide()
    8. TextBox4.Hide()
    9. TextBox5.Hide()
    10. TextBox6.Hide()
    11. TextBox7.Hide()
    12. Button4.Hide()
    13. Button5.Hide()
    14. Button6.Hide()
    15. Button9.Hide()
    16. Button10.Hide()
    17. Button11.Hide()
    18. TextBox8.Hide()
    19. TextBox9.Hide()
    20. TextBox10.Hide()
    21. TextBox11.Hide()
    22. TextBox12.Hide()
    23. Button14.Hide()
    24. Button13.Hide()
    25. Button12.Hide()
    26. Button8.Hide()
    27. Button7.Hide()
    28. Label9.Hide()
    29. Label10.Hide()
    30. Label11.Hide()
    31. End Sub


    Vielen Dank schon mal für die Antworten! :))

    LetMeExplain1997 schrieb:

    bin aber noch nicht 100% vertraut

    ach was ...

    zb mit "LINQ" als Einzeiler:

    VB.NET-Quellcode

    1. Array.ForEach(Of Control)((From p
    2. In Me.Controls.OfType(Of Control)()
    3. Where p.Name.Contains("marker")
    4. Select p).ToArray, Sub(c As Control) c.Hide())


    Alternativ mit for each über alle Controls laufen und die "gewünschten" verstecken oder zeigen
    Schau dir mal LINQ an

    Er geht alle Controls durch, guckt ob sie "marker" im Namen haben, und schaufelt die inne Collection. Diese wird mit For Each durchgegangen und für jedes Element "Hide" ausgeführt.

    Einzeiler sind zwar Praktisch, aber nicht Hilfreich für Anfänger...

    VB.NET-Quellcode

    1. Dim controlCollection = From control As Control In Me.Controls Where control.Name.Contains("marker")
    2. For Each c In coltrolCollection
    3. c.Hide
    4. End For


    Dieser Code sollte dass selbe machen und ist für Anfänger evtl. Verständlicher
    Ähnlich wie SQL... evtl. dazu auch mal Delegates googlen, brauchste aber erst richtig wenn du selbst was Enumerierbares schreibst (weil nur dann funzt LINQ, wenn eine Klasse IEnumerable(Of T) und IEnumerator(Of T) implementiert... wobei ich mir bei (Of T) nicht sicher bin).