vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
NEU! sevCoolbar 3.0 - Professionelle Toolbars im modernen Design!  
 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 - Ein- und Umsteiger
Gemeinsamen Datenstamm unabhängig an Steuerelemente binden 
Autor: keco
Datum: 23.02.13 09:19

Hallo,

wie ist es möglich einen gemeinsamen Datenstamm unabhängig an zwei (oder mehrere) Steuerelemente zu binden?

Folgende Situation: Ich habe eine Liste von Objekten, die eine ID und eine Farbe haben. Diese Liste gibt es nur einmal (Shared) und enthält alle verfügbaren Farben. Jetzt soll es so sein, dass ein anderes Objekt 2 Flächen hat, für die jeweils eine solche Farbe ausgewählt werden kann. Binde ich diese Liste aber an die ComboBox-Elemente (die stehen für die Auswahl der Farbe der Fläche), dann sind beide gleich, weil es sich um die gleichen Objekte handelt. Der vereinfachte Beispielcode dafür steht unten.

Muss man denn für einen solchen Fall den Datenstamm kopieren, also in diesem Fall zwei - von den Werten her identische - Listen im Speicher halten? Das erscheint mir ineffizient, vorallem bei vielen Daten. Wie löst man ein solches Problem?

Public Class Form1
    Dim x As MyCollection
 
    Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) _
      Handles MyBase.Load
        x = New MyCollection
 
        ComboBox1.DataSource = x.Colors
        ComboBox2.DataSource = x.Colors
    End Sub
 
    Private Sub ComboBox1_SelectedIndexChanged(sender As System.Object, e As _
      System.EventArgs) Handles ComboBox1.SelectedIndexChanged
        PictureBox1.BackColor = CType(ComboBox1.SelectedItem, MyColor).Color
    End Sub
 
    Private Sub ComboBox2_SelectedIndexChanged(sender As System.Object, e As _
      System.EventArgs) Handles ComboBox2.SelectedIndexChanged
        PictureBox2.BackColor = CType(ComboBox2.SelectedItem, MyColor).Color
    End Sub
End Class
 
Public Class MyCollection
    Shared Sub New()
        _Colors = New List(Of MyColor)
        Call InitializeColors()
    End Sub
 
    Private Shared Sub InitializeColors()
        _Colors.Add(New MyColor(0, Color.Black))
        _Colors.Add(New MyColor(1, Color.White))
        _Colors.Add(New MyColor(2, Color.Red))
        _Colors.Add(New MyColor(3, Color.Green))
        _Colors.Add(New MyColor(4, Color.Orange))
        _Colors.Add(New MyColor(5, Color.Blue))
    End Sub
 
    Shared Property Colors As List(Of MyColor)
End Class
 
Public Class MyColor
    Public Sub New(id As Integer, color As Color)
        _ID = id
        _Color = color
    End Sub
 
    Property ID As Integer
    Property Color As Color
 
    Public Overrides Function ToString() As String
        Return Me.Color.ToString
    End Function
End Class
alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
Gemeinsamen Datenstamm unabhängig an Steuerelemente binden1.308keco23.02.13 09:19
Re: Gemeinsamen Datenstamm unabhängig an Steuerelemente bind...845ModeratorDaveS23.02.13 09:59
Re: Gemeinsamen Datenstamm unabhängig an Steuerelemente bind...848keco23.02.13 10:05
Re: Gemeinsamen Datenstamm unabhängig an Steuerelemente bind...827ModeratorDaveS23.02.13 16:06
Re: Gemeinsamen Datenstamm unabhängig an Steuerelemente bind...866keco23.02.13 18:17

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