Chcę połączyć a BindingSource
z listą obiektów klas, a następnie wartości obiektów do ComboBox.
Czy ktoś może podpowiedzieć, jak to zrobić?
public class Country
{
public string Name { get; set; }
public IList<City> Cities { get; set; }
public Country()
{
Cities = new List<City>();
}
}
jest moją klasą i chcę powiązać jej name
pole z BindingSource, które można następnie skojarzyć z ComboBox
c#
winforms
data-binding
combobox
Mobin
źródło
źródło
Odpowiedzi:
Odnosząc się do combobox, zakładam, że nie chcesz używać dwukierunkowego wiązania danych (jeśli tak, spójrz na użycie
BindingList
)Aby znaleźć wybranego kraju w oprawionego combobox, byś zrobił coś takiego:
Country country = (Country)comboBox1.SelectedItem;
.Jeśli chcesz, aby ComboBox aktualizował się dynamicznie, musisz upewnić się, że struktura danych, którą ustawiłeś jako
DataSource
narzędziaIBindingList
; jedna taka struktura jestBindingList<T>
.Wskazówka: upewnij się, że wiążesz
DisplayMember
właściwość z właściwością klasy, a nie polem publicznym. Jeśli klasa używapublic string Name { get; set; }
, będzie działać, ale jeśli używapublic string Name;
, nie będzie w stanie uzyskać dostępu do wartości i zamiast tego wyświetli typ obiektu dla każdej linii w polu kombi.źródło
bindingSource1
oświadczenie?comboBox1.DataSource = bindingSource1.DataSource;
poprawne? czy powinno byćcomboBox1.DataSource = bindingSource1;
?W przypadku tła istnieją 2 sposoby korzystania z ComboBox / ListBox
1) Dodaj Country Objects do właściwości Items i pobierz kraj jako Selecteditem. Aby z tego skorzystać, należy zastąpić ToString of Country.
2) Użyj DataBinding, ustaw DataSource na IList (List <>) i użyj DisplayMember, ValueMember i SelectedValue
W przypadku 2) będziesz potrzebować najpierw listy krajów
Następnie w SelectionChanged,
źródło
Bum.
źródło
Spróbuj czegoś takiego:
Jeśli korzystasz z formularzy internetowych, musisz dodać ten wiersz:
źródło
To jest kod, którego teraz używam.
źródło
Jeśli używasz ToolStripComboBox, nie ma udostępnionego źródła danych (.NET 4.0):
źródło
ToolstripComboBox.ComboBox.DataSource
. Wygląda na to, żeToolstripComboBox
jest to opakowanie normalnegoComboBox
.