Имеет ли значение порядок назначения DataSource для BindingSource и назначения DisplayMember для ComboBox в WinForms?C#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Имеет ли значение порядок назначения DataSource для BindingSource и назначения DisplayMember для ComboBox в WinForms?

Сообщение Anonymous »

Я обнаружил, что следующие два кода, меняющие порядок назначения DataSource BindingSource и назначения DisplayMember моему ComboBox, на самом деле дают разные результаты. Когда я назначаю DisplayMember перед определением источника данных, как показано в следующих кодах, ComboBox фактически не отображает желаемый элемент DisplayMember (myProtocolInstance.Name), но выводит «myNameSpace.Protocol». В обоих окнах сообщений отображается пустая строка.

Код: Выделить всё

Dictionary bs = new Dictionary() {"protocol", new BindingSource()};
this.protocolCombo.DataSource = bs["protocol"];
MessageBox.Show($"{this.protocolCombo.DisplayMember}");  //output: ""
this.protocolCombo.DisplayMember = "Name";
MessageBox.Show($"{this.protocolCombo.DisplayMember}");  //output: ""
bs["protocol"].DataSource = protocol_list;
Однако, когда я меняю их порядок таким образом, ComboBox правильно отображает желаемые свойства имени из экземпляра протокола. И окно сообщений также отображает более разумный вывод: в первом отображается пустая строка, а во втором — «Имя».

Код: Выделить всё

Dictionary bs = new Dictionary() {"protocol", new BindingSource()};
this.protocolCombo.DataSource = bs["protocol"];
MessageBox.Show($"{this.protocolCombo.DisplayMember}");  //output: ""
bs["protocol"].DataSource = protocol_list;
this.protocolCombo.DisplayMember = "Name";
MessageBox.Show($"{this.protocolCombo.DisplayMember}");  //output: "Name"
Упрощенная версия класса протокола

Код: Выделить всё

public class Protocol
{
public string Name {  get; set; }
public Protocol(string name)
{
Name = name;
}
}
Интересно, это дефект Winform или он так задуман?
Дополнительная информация: Этот проект написан под .Net6. 0

Подробнее здесь: https://stackoverflow.com/questions/789 ... displaymem
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Имеет ли значение порядок назначения DataSource для BindingSource и назначения DisplayMember для ComboBox в WinForms?
    Anonymous » » в форуме C#
    0 Ответы
    21 Просмотры
    Последнее сообщение Anonymous
  • Обновление BindingSource в Winforms не обновляет коллекцию данных
    Anonymous » » в форуме C#
    0 Ответы
    15 Просмотры
    Последнее сообщение Anonymous
  • C# Winforms DataGridView с BindingSource не заполняется при запуске
    Anonymous » » в форуме C#
    0 Ответы
    4 Просмотры
    Последнее сообщение Anonymous
  • C# Winforms DataGridView с BindingSource не заполняется при запуске
    Anonymous » » в форуме C#
    0 Ответы
    4 Просмотры
    Последнее сообщение Anonymous
  • C# Winforms DataGridView с BindingSource не заполняется при запуске
    Anonymous » » в форуме C#
    0 Ответы
    5 Просмотры
    Последнее сообщение Anonymous

Вернуться в «C#»