vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Top-Preis! AP-Access-Tools-CD Volume 1  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2025
 
zurück

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

VB.NET - Fortgeschrittene
Re: ComboBox mit DataSource/BindingSource Select Item 
Autor: Manfred X
Datum: 25.11.24 06:15

Hallo!

So ganz klar ist mir Dein Problem nicht geworden.
Prinzipiell kommunizieren übergeordnete Klasseninstanzen (z.B. Formulare) mit untergeordneten
Instanzen durch die Zuweisung von Werten auf Properties der untergeordneten Instanz.
Untergeordnete Instanzen kommunizieren durch das Auslösen von Ereignissen, die in der
übergeordneten (erstellenden) Instanz verarbeitet werden können.
Ich habe das in einem Beispiel-Formular (Windows.Forms) zusammengefasst.

Das Formular 'DemoForm' erstellt ein Formular 'Subform1', bei dem Änderungen des Combobox-Index
per Ereignis an das übergeordnete Formular gemeldet werden.
Es wird zugleich ein zweites Formular 'Subform2' erstellt. Änderungen dex cbo-Index in 'Demoform'
werden per Property an 'Subform2' übertragen.
 Public Class frmDemo
 
    Dim WithEvents cbo As New ComboBox With {.Parent = Me, .Top = 10, .Left = _
      10, .Width = 200,
    .DropDownStyle = ComboBoxStyle.DropDownList}
 
    'Datenquelle und Bindung
    Dim dic As New Dictionary(Of Integer, String)
    Dim bs As New BindingSource
 
 
    Dim WithEvents btnCreateSubForms As New Button With {.Parent = Me, .Top = _
      100, .Width = 200,
        .Text = "Erstelle Formular"}
 
    Dim WithEvents Subform1, Subform2 As frmDemo  'untergeordnete Formulare / 
    ' Zugriffsvariablen
 
 
    Public Event cboindex_changed(ByVal newindex As Integer)  'Ereignis für 
    ' untergeordnetes Formular 
 
 
    Private Sub frmDemo_Load(sender As Object, e As EventArgs) Handles _
      MyBase.Load
 
        'Testdaten
        With dic
            .Add(1, "one") : .Add(2, "two")
            .Add(3, "three") : .Add(4, "four")
            .Add(5, "five") : .Add(6, "six")
        End With
 
        'Datenbindung
        bs.DataSource = dic
 
        cbo.DisplayMember = "Value"
        cbo.ValueMember = "Key"
        cbo.DataSource = bs
 
        Me.Size = New Size(300, 300)
 
    End Sub
 
 
    Private Sub btnCreateSubForms_Click(sender As Object, e As EventArgs) _
      Handles btnCreateSubForms.Click
 
        'Erstellung der untergeordneten Formulare
        Subform1 = New frmDemo
        With Subform1
            .StartPosition = FormStartPosition.Manual
            .Top = Me.Top + 100
            .Left = Me.Left + 100
            .Size = New Size(300, 300)
            .Text = "Subform1"
            .btnCreateSubForms.Visible = False
            .Show()
        End With
 
        Subform2 = New frmDemo
        With Subform2
            .StartPosition = FormStartPosition.Manual
            .Top = Me.Top + 200
            .Left = Me.Left + 200
            .Size = New Size(300, 300)
            .Text = "Subform2"
            .btnCreateSubForms.Visible = False
            .Show()
        End With
    End Sub
 
 
    'Im untergeordneten Formular 'subform1/2' wird das Ereignis ausgelöst, das 
    ' die Änderung des cbo-Index mitteilt
    'aber nur die Meldung von Subform1 wird in Demoform verarbeitet (siehe 
    ' nächste Routine)
    Private Sub cbo_SelectedIndexChanged(sender As Object, e As EventArgs) _
      Handles cbo.SelectedIndexChanged
 
        RaiseEvent cboindex_changed(cbo.SelectedIndex)
 
        If Subform2 IsNot Nothing Then
            'Übergabe des aktuellen Index an Subform2
            Subform2.Comboindex = cbo.SelectedIndex
        End If
    End Sub
 
 
    'Im übergeordneten Formular wird Index des untergeordneten Formuars 
    ' 'subform1' übernommen
    'Ereignisverarbeitung
    Private Sub Subform1_cboindex_changed(newindex As Integer) Handles _
      Subform1.cboindex_changed
 
        cbo.SelectedIndex = newindex
    End Sub
 
 
    Public WriteOnly Property Comboindex As Integer
        'benötigt in Subform2: Für Übergabe des Index von Demoform
        Set(value As Integer)
            cbo.SelectedIndex = value
        End Set
    End Property
 
End Class
alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
ComboBox mit DataSource/BindingSource Select Item389silast22.11.24 18:25
Re: ComboBox mit DataSource/BindingSource Select Item114Manfred X25.11.24 06:15

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-2025 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