Tipp 0049 Steuerelementfelder erstellen
Autor/Einsender:
Datum:
  Klaus Raudszus
24.07.2004
Entwicklungsumgebung:   VB.Net 2003
Framework:   1.1
In VB war das Erstellen und der Zugriff auf Steuerelementfelder recht einfach über den Index zu erledigen. Die .Net-Controls besitzen aber keine Index-Eigenschaft mehr. Dieser Tipp zeigt, wie man mit einem Control-Array als Ersatz für Steuerelementfelder operieren kann. Er demonstriert das Erstellen, die Positionierung und den Zugriff über die AddHandler-Technik.
 
Public Class Form1
  Inherits System.Windows.Forms.Form

  Friend Lab_Array(122) As Label

  Dim i As Integer = 0

  Const Con_labTextText As String = "Labeltext:     "
  Const Con_labIndexText As String = "Labelindex:  "
Vom Windows Form Designer generierter Code
  Private Sub Form1_Resize(ByVal sender As Object, _
          ByVal e As System.EventArgs) Handles MyBase.Resize
    Me.labText.Location = New Point(Me.pnlHNrn.Width, 0)
    Me.labIndex.Location = New Point(Me.pnlHNrn.Width, 30)
  End Sub

  Private Sub Form1_Load(ByVal sender As System.Object, _
          ByVal e As System.EventArgs) Handles MyBase.Load
    Me.LabArrayHNr()
    Me.labText.Text = Con_labTextText
    Me.labIndex.Text = Con_labIndexText
  End Sub

#Region "  Label-Steuerelementefeld erzeugen 123 x "
  Private Sub LabArrayHNr()
    Dim x As Integer = 10
    Dim y As Integer = 10

    For i = 0 To 122
      Me.Lab_Array(i) = New Label
      AddHandler Lab_Array(i).Click, AddressOf Lab_Array_Click
      AddHandler Lab_Array(i).MouseMove, _
                AddressOf Lab_Array_MouseMove
      Me.Controls.Add(Me.Lab_Array(i))
      Me.pnlHNrn.Controls.AddRange( _
                New Control() {Me.Lab_Array(i)})
      Me.pnlHNrn.Controls.Item(i).Name = i
      With Me.Lab_Array(i)
        .BackColor = Color.Black
        .Font = New Font("Arial", 11.25!, _
                 FontStyle.Bold, GraphicsUnit.Point, _
                 CType(0, Byte))
        .ForeColor = Color.FromArgb(CType(0, Byte), _
                 CType(192, Byte), CType(0, Byte))
        .TextAlign = ContentAlignment.MiddleCenter
        .Text = i + 1
        .Location = New Point(x, y)
        .Size = New Size(35, 20)
      End With
      x = x + 35
      If x > 200 Then x = 10 : y = y + 20
    Next
  End Sub
#End Region

  Private Sub Lab_Array_Click(ByVal sender As Object, _
          ByVal e As System.EventArgs)
    Dim Mouse_Click_Label As Label = sender
    Dim Index As Integer = CType(Mouse_Click_Label.Name, Integer)

    Me.labText.Text = Con_labTextText & Mouse_Click_Label.Text
    Me.labIndex.Text = Con_labIndexText & Index

    Select Case Index
      Case 0
        MessageBox.Show("1")
      Case 1
        MessageBox.Show("2")
      Case 2
        MessageBox.Show("3")
      Case 3
        MessageBox.Show("4")
      Case 4
        MessageBox.Show("5")
      Case 5
        MessageBox.Show("6")
    End Select
  End Sub

  Private Sub Lab_Array_MouseMove(ByVal sender As Object, _
          ByVal e As System.Windows.Forms.MouseEventArgs)
    Dim Mouse_Move_Label As Label = sender

    For i = 0 To 122
      Me.Lab_Array(i).ForeColor = Color.FromArgb( _
           CType(0, Byte), CType(192, Byte), CType(0, Byte))
    Next
    Mouse_Move_Label.ForeColor = Color.FromArgb( _
           CType(192, Byte), CType(0, Byte), CType(0, Byte))
  End Sub

  Private Sub pnlHNrn_MouseMove(ByVal sender As Object, _
          ByVal e As System.Windows.Forms.MouseEventArgs) _
          Handles pnlHNrn.MouseMove
    For i = 0 To 122
      Me.Lab_Array(i).ForeColor = Color.FromArgb( _
          CType(0, Byte), CType(192, Byte), CType(0, Byte))
    Next
  End Sub

  Private Sub MenuItem4_Click(ByVal sender As System.Object, _
          ByVal e As System.EventArgs) Handles MenuItem4.Click
    Me.Close()
  End Sub
End Class
 
Weitere Links zum Thema
Dynamische Anpassung der Steuerelemente
Ereignisse zentral mit AddHandler auswerten

Windows-Version
98/SE
ME
NT
2000
XP
Vista
Win 7


Download  (7,4 kB) Downloads bisher: [ 815 ]

Vorheriger Tipp Zum Seitenanfang Nächster Tipp

Startseite | Tipps | Projekte | Tutorials | Bücherecke | VB-/VBA-Tipps | API-Referenz | Komponenten | VB.Net-Forum | VB/VBA-Forum | DirectX-Forum | Foren-Archiv | DirectX | Chat | Spielplatz | Links | Suchen | Stichwortverzeichnis | Feedback | Impressum

Seite empfehlen Bug-Report
Letzte Aktualisierung: Sonntag, 22. Januar 2012