Schleife für Textbox(x).Eigenschaft

  • VB.NET

Es gibt 19 Antworten in diesem Thema. Der letzte Beitrag () ist von Artentus.

    Schleife für Textbox(x).Eigenschaft

    Hallo,

    da ich leider trotz intensiver Internetrecherche nicht fündig wurde, bzw. nichts gefunden habe, das funktionieren würde, möchte ich meine Frage nun hier stellen:

    Ich habe mehrere Textboxen (TextBox1,TextBox2 usw.) die ich im Designer erstellt habe (und auch an anderen Stellen benötige, deshalb kann ich sie nicht erst zur Laufzeit erstellen) und ich möchte, dass diese alle die Eigenschaft Visible=false erhalten
    also:

    VB.NET-Quellcode

    1. TextBox1.Visible = False
    2. TextBox2.Visible = False
    3. 'usw


    ich habe auch schon so etwas (mit for each - schleife) gefunden, jedoch müsste ich hier wieder alle Textboxen in der Liste eintragen...was so ziemlich auf die gleiche arbeit kommen würde...

    VB.NET-Quellcode

    1. For Each tb In {TextBox1, TextBox2, ...}
    2. tb.Visible = False
    3. Next


    Deshalb hätte ich mir etwas mehr in dieser Art vorgestellt, was aber leider so nicht funktioniert...

    ?(

    VB.NET-Quellcode

    1. For x = 1 To 32
    2. TextBox(x).Visible=False
    3. Next x


    Ich bin noch relativ am Anfang beim Lernen, deshalb bitte ich um etwas Verständnis, für meine evtl. 'blöde' Frage...

    Vielen Dank im Voraus :)
    Hallo Markus,

    danke für die Antwort, jedoch erhalte ich mit diesem Code immer die Meldung " "OfType" ist kein Member von "System.Windows.Forms.Control.ControlCollection". "
    Außerdem sind das nicht die einzigen Textboxen, die ich in meinem Programm habe, also müsste ich irgendwo noch einen "Filter" einbauen können, mit dem ich alle Textboxen, die mit "TextBox" beginnen, herausfiltere?

    mfG Jenny
    Filtern vielleicht so:

    VB.NET-Quellcode

    1. Private Sub AlleTextboxen_Unsichtbar()
    2. For Each _SysTextbox As System.Windows.Forms.TextBox In Me.Controls.OfType(Of TextBox)()
    3. For i As Integer = 1 To 32
    4. If _SysTextbox.Name = "Textbox" & i.ToString Then
    5. _SysTextbox.Visible = False
    6. End If
    7. Next i
    8. Next
    9. End Sub

    Ich denke du musst in deinem Projekt noch einen Verweiis auf die Collectrion Klasse setzen.
    Gruß Markus
    Danke :)

    Habe bez. der Collection Klasse hier msdn.microsoft.com/de-at/library/ms132397%28v=vs.85%29.aspx nachgelesen und im Beispiel stand, man sollte Folgendes importieren:

    VB.NET-Quellcode

    1. Imports System
    2. Imports System.Collections.Generic
    3. Imports System.Collections.ObjectModel
    4. Imports System.Collections


    Jedoch erhalte ich trotzdem immer noch dieselbe Fehlermeldung, oder ist mit einem 'Verweis auf die Collection-Klasse' etwas anderes gemeint? ?(

    Ich nutze .net Framework 3.0, könnte es auch damit zusammenhängen?

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „jen“ ()

    @jen: Pack alle Controls, die Du auf einen Schlag unsichtbar machen willst, in ein gemeinsames Panel und mach dann dieses Panes unsichtbar:

    VB.NET-Quellcode

    1. Panel1.Visible = False
    Feddich. :D
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Danke :)

    Jedoch ist mein Programm so aufgebaut, dass ich da schon mit mehreren (sichtbaren) Ebenen herumbastele...und das mache ich im moment mit GroupBox...aber in dieser Groupbox möchte ich nun einen gewissen teil anzeigen (Buttons) und den anderen nicht (Textboxen)... wenn ich da noch ein panel drüber lege, erfasse ich leider nicht alles, bzw. zu viel :S

    mfG Jenny
    @jen: Das sieht mir doch sehr nach TabControl ohne Reiter aus.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!

    jen schrieb:

    aber auch das verwende ich bereits
    Kannst Du mal ein Bild Deiner GUI posten?
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Wenn Du das Framework nicth updaten kannst, oder willst, dann füge jede TextBox einfach rekursiv in eine Liste ein. Über diese Liste hast Du dann einfachen Zugriff auf jede TextBox.

    VB.NET-Quellcode

    1. Public Class Form1
    2. Private _listTextBoxes As New List(Of TextBox)
    3. Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    4. GetTextBoxes(Me)
    5. End Sub
    6. Private Sub GetTextBoxes(ByVal container As Control)
    7. For Each c As Control In container.Controls
    8. If TypeOf (c) Is TextBox Then
    9. _listTextBoxes.Add(DirectCast(c, TextBox))
    10. End If
    11. If c.HasChildren Then
    12. GetTextBoxes(c)
    13. End If
    14. Next
    15. End Sub
    16. Private Sub SetVisiblity(ByVal visible As Boolean)
    17. For Each tB As TextBox In _listTextBoxes
    18. tB.Visible = visible
    19. Next
    20. End Sub
    21. Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
    22. SetVisiblity(False)
    23. End Sub
    24. End Class


    Ich hab gelesen, dass sich LINQ wohl auch mit niedrigeren FW-Versionen zum Laufen bewegen lässt. Google bei Interesse einfach mal danach. Ohne LINQ verzichtest Du auf viel komfort.
    Die Unendlichkeit ist weit. Vor allem gegen Ende. ?(
    Manche Menschen sind gar nicht dumm. Sie haben nur Pech beim Denken. 8o
    Hallo,

    @Artentus
    Ich verwende eine Windows Forms-Steuerelementbibliothek mit Framework 3.0 weil ich mein Programm dann als Control in WinCC einbinde (was laut Internet-Recherche nur bis Framework 3.0 funktioniert).

    @SpaceyX
    Danke! Hab's noch ein bisschen umgebastelt, dass es perfekt für mein Programm passt, und funktioniert einwandfrei :)
    Wegen dem LINQ, werde ich nochmal nachgooglen, danke für den Tipp!

    mfG Jenny