Steuerelementfelder aus VB6

    • VB.NET

    Es gibt 1 Antwort in diesem Thema. Der letzte Beitrag () ist von Mad Andy.

      Steuerelementfelder aus VB6

      Wie kann ich Steuerelementfelder wie damals in VB6 erstellen?

      Das lässt sich lösen, indem man von dem Steuerelement ein Array bzw Arraylist/Hashtable erstellt und evtl Click-Events zuweist: Button Klasse

      ODER

      Control-Array von Mad Andy:

      VB.NET-Quellcode

      1. Public Class Form1
      2. Inherits System.Windows.Forms.Form
      3. Private ArrControls As New ArrayList
      4. 'Vom Windows Form Designer generierter Code
      5. Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
      6. For i As Integer = 0 To 2
      7. Dim txt As New TextBox
      8. txt.Name = "txt" & i
      9. txt.SetBounds(8, 30 * (i + 1), 100, 30)
      10. txt.Text = "Text" & i
      11. AddHandler txt.Click, AddressOf Clicker
      12. ArrControls.Add(txt)
      13. Me.Controls.Add(txt)
      14. Next
      15. End Sub
      16. Private Sub Clicker(ByVal sender As System.Object, ByVal e As System.EventArgs)
      17. MsgBox(sender.Text)
      18. End Sub
      19. End Class


      Mehr Infos: Steuerelementfelder in VB2005


      Keywords: Visual Basic .net, VB.net, VB 2005, Steuerelement, Steuerelementfeld, Control, OCX, Array, Add Handler
      Gruß, Agent Smith 8-)

      activeFlags = (lazy OR weary)

      Lemgo-Verschwörung | Mathematics | VB-Paradise in blau

      Dieser Beitrag wurde bereits 6 mal editiert, zuletzt von „Mad Andy“ ()

      Update:
      Statt einer ArrayList ist es sinnvoller eine Hashtable zu verwenden:

      VB.NET-Quellcode

      1. 'Speicher für den Zugriff auf unsere dynamischen Steuerelemente
      2. Private ControlsTable As New Hashtable
      3. Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
      4. For i As Integer = 0 To 2 '3 Stück
      5. 'Neue Textbox erzeugen
      6. Dim txt As New TextBox
      7. 'Eigenschaften setzen
      8. txt.Name = "txt" & i
      9. txt.SetBounds(8, 30 * (i + 1), 100, 30)
      10. txt.Text = "Text" & i
      11. 'Ereignisbehandlung hinzufügen
      12. AddHandler txt.Click, AddressOf Clicker
      13. ControlsTable.Add(txt.Name, txt) 'In unsere Liste eintragen
      14. Me.Controls.Add(txt) 'der Form hinzufügen
      15. Next
      16. End Sub
      17. Private Sub Clicker(ByVal sender As System.Object, ByVal e As System.EventArgs)
      18. 'Eregnisreaktion
      19. MsgBox(sender.Text)
      20. End Sub
      21. Private Sub Button1_Click(ByVal sender as System.Object, Byval e as System.EventArgs)
      22. 'Mit folgendem code kann die Textbox dann angesprochen werden:
      23. MsgBox(ControlsTable.Item("txt1").Text)
      24. End Sub



      Beachte:
      Man kann auf die zusätzliche ArrayList / HashTable auch ganz verzichten, dann muss man aber aufwändig über

      VB.NET-Quellcode

      1. Me.Controls.Find("txt1", false)(0).Text = "blubb"
      das Steuerelement raussuchen, was zu dem auch noch langsamer ist.


      so long..
      Andy

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

    • Benutzer online 1

      1 Besucher

    • 2 Benutzer haben hier geschrieben