vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Erstellen von dynamischen Kontextmen?s - wann immer Sie sie brauchen!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2024
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

VB.NET - Ein- und Umsteiger
Buttons zur Laufzeit erstellen, verschieben und die Properties speichern 
Autor: Manfred X
Datum: 21.01.14 13:31

Deklariere im Code "formularglobal" eine Liste für
Referenzen zu den dynamisch erstellten Buttons:
Dim buttonlst As New List(Of Button)
Erstelle zwei "spiegelbildliche" Routinen, für die
Übertragung der Button-Daten zwischen Buttons und File:
    Private Sub ButtonsToFile()
 
        If buttonlst.Count = 0 Then Exit Sub
 
        Dim ctldaten As New List(Of String)
        Dim ctlfields(6) As String
        For i As Integer = 0 To buttonlst.Count - 1
            With buttonlst(i)
                ctlfields(0) = "Button"
                ctlfields(1) = .Name
                ctlfields(2) = .Text
                ctlfields(3) = CStr(.Tag)
                ctlfields(4) = CStr(.Top)
                ctlfields(5) = CStr(.Left)
                ctlfields(6) = CStr(.BackColor.ToString)
            End With
            ctldaten.Add(String.Join("|", ctlfields))
        Next
 
        IO.File.WriteAllLines(ctlfile, ctldaten.ToArray)
 
    End Sub
 
 
 
    Private Sub FileToButtons()
 
        If Not IO.File.Exists(ctlfile) Then Exit Sub
 
        buttonlst.Clear()
        Dim ctldaten() As String = IO.File.ReadAllLines(ctlfile)
        Dim ctlfields(5) As String
        For i As Integer = 0 To ctldaten.Length - 1
            ctlfields = ctldaten(i).Split("|"c)
            If ctlfields.Length = 7 Then
                If ctlfields(0) = "Button" Then
                    Dim btn As New Button
                    With btn
                        .Name = ctlfields(1)
                        .Text = ctlfields(2)
                        .Tag = ctlfields(3)
                        .Top = CInt(ctlfields(4).Trim)
                        .Left = CInt(ctlfields(5).Trim)
 
                        .BackColor = _
                        Color.FromName(ctlfields(6).Trim(" "c, "]"c).Substring( _
                        7))
 
                        .Parent = Me
 
                        buttonlst.Add(btn)  'in Liste eintragen
                        ButtonHandlers(btn) 'Handler erstellen
                    End With
                End If
            End If
        Next i
    End Sub
Die Load-Routine des Formulars (Laden):
  Private Sub frmDynamic_Load(sender As System.Object, _
        e As System.EventArgs) Handles MyBase.Load
 
        Me.KeyPreview = True
        Me.BackColor = Color.LightGray
 
        FileToButtons() 'Buttonangaben lesen
 
        '......
Die FormClosing-Routine (Speichern):
    Private Sub frmDynamic_FormClosing(sender As Object, _
                e As System.Windows.Forms.FormClosingEventArgs) _
                Handles Me.FormClosing
 
        ButtonsToFile()
 
        '...........
    End Sub
Das Erstellen eines Buttons im MouseDown-Eventhandler:
    Private Sub frmDynamic_MouseDown(sender As Object, _
        e As System.Windows.Forms.MouseEventArgs) _
        Handles Me.MouseDown
 
        If e.Button = Windows.Forms.MouseButtons.Right Then
 
            buttoncounter = buttonlst.Count 'Zähler aus Listenlänge
 
            Dim btn As New Button With _
                {.Parent = Me, _
                 .Location = e.Location, _
                 .Name = "Dynamic" & CStr(buttoncounter), _
                 .Tag = CStr(buttoncounter), _
                 .Text = "Neu" & CStr(.Tag), _
                 .BackColor = Color.Yellow}
 
            ButtonHandlers(btn)
            buttonlst.Add(btn)  'neuer Button: Referenz in Liste            
        End If
Das Verschieben per Maus funktioniert mit dem bereits oben geposteten Code.

Beitrag wurde zuletzt am 21.01.14 um 13:52:20 editiert.
alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
Button zur Laufzeit erstellen4.231stefanbla8020.01.14 09:44
Re: Button zur Laufzeit erstellen3.587Manfred X20.01.14 14:11
Re: Button zur Laufzeit erstellen3.510stefanbla8020.01.14 20:37
Re: Button zur Laufzeit erstellen3.578Manfred X20.01.14 22:55
Re: Button zur Laufzeit erstellen3.454stefanbla8021.01.14 10:27
Buttons zur Laufzeit erstellen, verschieben und die Properti...3.626Manfred X21.01.14 13:31
Re: Button zur Laufzeit erstellen3.421stefanbla8022.01.14 13:22

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2024 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel