Winforms, databinding, Listbox et un textbox
J'ai une ListBox (MyListBox
) sur mon écran, et une zone de texte (MyTextBox
).
La zone de liste est remplie avec une List(Of T), qui sont tous des éléments personnalisés.
Maintenant, j'essaie de le faire:
La ListBox' source de données est la Liste(De T).
Maintenant, quand un Élément changements que je veux la zone de texte pour être mis à jour pour une propriété particulière de l'élément sélectionné dans ma ListBox.
Dans le code, cela signifie:
Me.MyListBox.DisplayMember = "SelectionName"
Me.MyListBox.ValueMember = "Id"
MyTextbox.DataBindings.Add(New Binding("Text", Me._listOfItems, "SelectedItem.Comment", True, DataSourceUpdateMode.OnPropertyChanged))
Me.MyListBox.DataSource = Me._listOfItems
cela ne fonctionne pas. Mais quand je la lie à SelectedValue au lieu de SelectedItem, il fonctionne parfaitement.
La _listOfItems
est déclaré comme ceci:
Dim _listOfItems As List(Of MyItem) = New List(Of MyItem)()
Où MyItem
est-ce:
public class MyItem
{
public string SelectionName { get; set; }
public int Id { get; set; }
public string Comment { get; set; }
}
J'ai essayé en remplaçant la ToString()
dans MyItem
de sorte qu'il serait de l'utiliser. Mais cela ne fonctionne pas non plus.
Quiconque le soin de lui donner un essai?
Merci!
-Snakiej
OriginalL'auteur Snake | 2010-05-25
Vous devez vous connecter pour publier un commentaire.
L'un de la manière la plus facile, je pense, serait d'utiliser un
BindingSource
, de le définir commezone de liste.Source de données
propriété à votreBindingSource
sur le design.BindingSource
sur votre formulaire;ListBox.DataSource
propriété à votreBindingSource
;ValueMember
etDisplayMember
propriétés juste comme vous êtes en train de faire;DataBinding
pour votreTextBox
de contrôle, et d'utiliser vosBindingSource
comme la source, à l'aide de votreMyItem.Comment
bien;List(Of MyItem)``to your
de Liaison.Source de données` propriété;CurrencyManager.CurrentItem
's Commentaire de la propriété, qui est, actuellementListBox.SelectedItem
.En effet, vous auriez peut-être besoin de mettre en œuvre la
INotifyPropertyChanged
interface pour le faire fonctionner correctement.Mais si tout cela fonctionne parfaitement avec le SelectValue, pourquoi ne pas simplement utiliser?
Je l'ai eu! Vous avez raison, si ce que vous voulez est d'offrir un choix à l'utilisateur, ne nous laissons pas faire avec l'Id. =P
option 5 n'est pas nécessaire 🙂 et pour l'option 4: - je utiliser cette liaison: nouvelle Liaison("Texte", bindingSource1, "Commentaire", ...) car il utilise déjà le .Actuel de la propriété de la bindingSource! Merci!!!!
OriginalL'auteur Will Marcouiller