Ich habe ein einfaches Formular, das DataBinding verwendet, um an eine Objektgruppe zu binden. Zunächst möchte ich nicht, dass die ComboBox eine Auswahl anzeigt, also setze ich den ausgewählten Index auf -1. Wenn die ComboBox jedoch ausgewählt wird, kann ich sie nicht abwählen, ohne einen Wert auszuwählen.ComboBox mit Bindung an SeclectedItem kann die Auswahl nicht ändern
Wie kann ich die ComboBox abwählen (andere Steuerelemente auswählen), ohne einen Wert auszuwählen?
neu zu erstellen, eine neue winform zu schaffen, eine ComboBox und einen Text hinzufügen, dann diesen Code verwenden:
Imports System.Collections.Generic
Public Class Form1
Public Property f As Person
Public Sub New()
' This call is required by the designer.
InitializeComponent()
' Add any initialization after the InitializeComponent() call.
Dim db As New People
' ComboBox1.CausesValidation = False
ComboBox1.DataSource = db
ComboBox1.DisplayMember = "Name"
ComboBox1.DataBindings.Add("SelectedItem", Me, "f", False, DataSourceUpdateMode.OnPropertyChanged)
ComboBox1.SelectedIndex = -1
End Sub
End Class
Public Class Person
Public Property Name As String
End Class
Public Class People
Inherits List(Of Person)
Public Sub New()
Me.Add(New Person With {.Name = "Dave"})
Me.Add(New Person With {.Name = "Bob"})
Me.Add(New Person With {.Name = "Steve"})
End Sub
End Class
Wenn die Form der ComboBox beginnt ausgewählt werden sollte, und es ist nicht möglich, die TextBox auszuwählen.
Ich habe festgestellt, dass das Umschalten von CausesValidation auf False auf der ComboBox das Problem behebt, aber es bricht die DataBinding.
glaube, ich Liste gebunden 'ComboBox' (und allgemeiner' ListControl') kann nicht abgewählt werden, da 'CurrencyManager' nicht die' Position' Einstellung erlaubt, wenn auf -1 die zugrunde liegende Liste 'Count'> 0 –
Problemumgehung Fügen Sie ein NONE-Objekt mit ungültigem Wert hinzu. – Ramankingdom
Dem Benutzer zu erlauben, einen ungültigen Wert auszuwählen, ist keine gute Lösung –