Announcement

Collapse
No announcement yet.

Combobox Databinding

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Combobox Databinding

    Ich habe ein Problem. Ich habe eine Liste (List(of Input) wobei Input meine eigene Klasse ist). Nun binde ich diese Liste an eine Combobox. Alle vorhandenen Einträge werden auch richtig angezeigt. Wenn ich nun aber einen neuen Eintrag in die Liste hinzufüge erscheint er nicht in der Combobox. Auch ein Combobox.Update() bringt nichts.

    [highlight=vbnet]
    Dim Liste as List(of Input)

    Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
    liste.Add(sensor)
    liste.Add(sensor2)
    Me.ComboBox1.DisplayMember = "Name"
    Me.ComboBox1.DataSource = liste
    End Sub

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    liste.Add(New Input(InputBox("Byteindex:", "Eingabe", "0"), InputBox("Bitindex:", "Eingabe", "5"), S7Datatypes.S7Bit, InputBox("Sensorname", "Eingabe", CStr(Input.Count))))
    End Sub
    [/highlight]

    Stark vereinfachte Darstellung der Tatsache.

    Wäre dankbar für Hilfe.

    Gruß
    das-d
    Unsere Jugend ist unerträglich, unverantwortlich und entsetzlich anzusehen! - Aristoteles

  • #2
    Hallo,

    ich glaube, ich habe dazu den Hinweis gelesen, dass die DataSource neu zuzuordnen ist. Wenn das noch nicht reicht, dann vorher auf null setzen und danach neu zuordnen.

    Vielleicht hilfts. Jürgen

    Comment


    • #3
      Hallo,

      ich verwende dazu eine BindingSource. Dieses ist nach Änderungen zu aktualisieren.

      Beispiel:
      [highlight=vbnet]
      Imports System
      Imports System.Collections.Generic
      Imports System.Windows.Forms

      Namespace WindowsFormsApplication1
      Public Partial Class Form1
      Inherits Form
      Private _myList As New List(Of Item)()
      Private _bs As New BindingSource()

      Public Sub New()
      InitializeComponent()

      _bs.DataSource = _myList
      comboBox1.DisplayMember = "Name"
      comboBox1.DataSource = _bs
      End Sub

      Private Sub Form1_Load(ByVal sender As Object, ByVal e As EventArgs)

      _myList.Add(New Item("Gü"))
      _myList.Add(New Item("Andrea"))

      ' Aktualisieren der Bindungen:
      _bs.ResetBindings(False)
      End Sub

      Private Sub button1_Click(ByVal sender As Object, ByVal e As EventArgs)
      _myList.Add(New Item("Maximilian"))

      ' Aktualisieren der Bindungen:
      _bs.ResetBindings(False)
      End Sub
      End Class

      Public Class Item
      Private _Name As String
      Public Property Name() As String
      Get
      Return _Name
      End Get
      Set(ByVal value As String)
      _Name = value
      End Set
      End Property

      Public Sub New(ByVal name As String)
      Me.Name = name
      End Sub
      End Class
      End Namespace
      [/highlight]

      mfG Gü
      "Any fool can write code that a computer can understand. Good programmers write code that humans can understand". - Martin Fowler

      Comment


      • #4
        Danke Gü funktioniert wie gewollt ;-)
        Unsere Jugend ist unerträglich, unverantwortlich und entsetzlich anzusehen! - Aristoteles

        Comment

        Working...
        X