Ich bin neu in der Datenbindung.WinForms Datenbindung
Ich habe diese Klassen:
public class Foo : List<Bar>
{
public string FooName { get; set; }
}
public class Bar
{
public string BarName { get; set; }
public string BarDesc { get; set; }
}
Und ich habe eine List<Foo>
I Foo
Artikel in ComboBox
und Bar
Artikel in ListBox
haben möchten. Wenn ich das ausgewählte Element in ComboBox
ändere, möchte ich ListBox
ändern. Wenn ich das ausgewählte Element in ListBox
ändere, möchte ich TextBox
mit BarDesc
gefüllt haben.
Folgende Arbeiten nur für ListBox
und ComboBox
:
comboBox1.DataSource = foos;
comboBox1.DisplayMember = "FooName";
listBox1.DataBindings.Add("DataSource", foos, "");
listBox1.DisplayMember = "BarName";
ich nicht jetzt, wie Bar
in ListBox
zu TextBox.Text
Eigenschaft ausgewählt zu binden. Vielleicht ist eine Bindung für listBox1
keine gute Idee.
Vielleicht sollte ich so etwas tun:
((CurrencyManager)listBox1.BindingContext[foos]).CurrentChanged += new EventHandler((o, a) =>
{
textBox1.DataBindings.Clear();
textBox1.DataBindings.Add("Text", listBox1.DataSource, "BarDesc");
});
Wie kann ich mein Problem lösen?
Microsoft wollte nie, dass Klassen von 'List' erben. Ich denke, sie empfehlen 'Collection ' als Basisklasse. –
ja72
Ich wusste nichts davon, aber selbst wenn ich zu Collection wechseln würde, wäre das Problem geblieben. Wie auch immer, heutzutage würde ich lieber nicht die Liste "" erweitern, sondern sie stattdessen in "Foo" als eine Eigenschaft zusammenfassen. –
prostynick
Ja, das war nur eine Bemerkung, die nichts mit der Lösung des Problems zu tun hat. Siehe http://stackoverflow.com/q/21692193/380384 – ja72