powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Непонятное поведение ComboBox
8 сообщений из 8, страница 1 из 1
Непонятное поведение ComboBox
    #39698583
Супер_Пав
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Почему-то слетает DisplayMember после того, как DataSource присваивается null. Причем только со второго присвоения.
Например, создадим форму, кинем на нее ComboBox и Button. Проставим в дизайнере формы сво-ва DisplayMember и ValueMember у ComboBox-а. По нажатию кнопки будем выполнять сл код:
Код: c#
1.
2.
3.
comboBox1.DataSource = null;
comboBox1.DataSource = new List<SomeClass>{...};
comboBox1.SelectedValue = SomeValue;


При первом нажатии список заполнится значениями и будет выбран элемент SomeValue. При повторном нажатии у меня выдает "WindowsFormsApplication1.SomeClass". Это произошло, т.к. слетело св-во DisplayMember. Кто-нить знает, почему так происходит? Это глюк или особенность? Сброс происходит после строки comboBox1.DataSource = null.
...
Рейтинг: 0 / 0
Непонятное поведение ComboBox
    #39698633
Дмитрий77
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Супер_Пав,

В .Net много подобных глюков. Не только с ComboBox, но и с другими Common Controls.

Приведу пример.
У меня в дизайнере стоит шрифт Microsoft Sans Serif; 8,25pt (он по дефолту).
При загрузке формы если OS>= Vista, хочется установить Segoe UI 9.
Код: vbnet
1.
2.
     Dim fnt_Vista As Font = New System.Drawing.Font("Segoe UI", 9.0!)
      Me.PanelMain.Font = fnt_Vista


Приводит к тому, что весь текст во всех ComboBox-ах становится выделенным.
(казалось бы, какое отношение)
Приходится делать workaround:
Код: vbnet
1.
2.
3.
      Me.ComboBox1.SelectionLength = 0
      Me.ComboBox2.SelectionLength = 0
...



С тем что что-то пропадало в Combobox тоже сталкивался.

Другие глюки могут возникать при допиливании через API. Причем иногда API не срабатывают как должно, потому как уже понавешано всякой мути, типа неродных тултипов.

Ну, надо воспринимать как есть (вопросы "а пачему" бессмысленны), играться с кодом, как правило решение находится (всяко проще чем запиливать контролы с нуля через API). Но, к слову, в том же VB6 таких "неожиданностей" никогда не возникало.
А здесь типичная ситуация, что "фича" оборачивается "глюком".

Еще могу дать общее соображение, не всегда стоит в дизайнере изменять "дефолты", это иногда может привести к подобным глюкам. (код "дизайнера" бодается с кодом скажем в Form.Load и не всегда очевидно кто кого осилит.)
...
Рейтинг: 0 / 0
Непонятное поведение ComboBox
    #39698637
Супер_Пав
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я просто не ожидал такого, даже подумать не мог. Как итог, в боевую базу попали записи вида "WindowsFormsApplication1.SomeClass". Вот это жесткая подстава оказалась.
...
Рейтинг: 0 / 0
Непонятное поведение ComboBox
    #39698759
Дмитрий77
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Супер_Пав в боевую базу попали записи вида "WindowsFormsApplication1.SomeClass
Еще надо аккуратно использовать всякие .ToString, если не думая то могут быть сюрпризы. Например я в vb.net предпочитаю таки
CStr(value) вместо value.ToString . Надо в контексте смотреть что у тебя код там вычисляет.
...
Рейтинг: 0 / 0
Непонятное поведение ComboBox
    #39699957
Фотография Cat2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Да, неприятный глюк.

Я не уверен, исходников под рукой нет, да и давно это было, но вроде помогает после

Код: c#
1.
2.
comboBox1.DataSource = null;
comboBox1.DataSource = new List<SomeClass>{...};



снова определить DataMember
...
Рейтинг: 0 / 0
Непонятное поведение ComboBox
    #39699959
Фотография Cat2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Cat2
Код: c#
1.
comboBox1.DataSource = null;


Это лишнее, кстати.
...
Рейтинг: 0 / 0
Непонятное поведение ComboBox
    #39700540
Супер_Пав
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cat2Да, неприятный глюк.

Я не уверен, исходников под рукой нет, да и давно это было, но вроде помогает после

Код: c#
1.
2.
comboBox1.DataSource = null;
comboBox1.DataSource = new List<SomeClass>{...};



снова определить DataMember
Да, так и решил проблему
...
Рейтинг: 0 / 0
Непонятное поведение ComboBox
    #39700541
Супер_Пав
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cat2Cat2
Код: c#
1.
comboBox1.DataSource = null;


Это лишнее, кстати.
это просто пример.
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Непонятное поведение ComboBox
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]