Гость
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Непонятное поведение ComboBox / 8 сообщений из 8, страница 1 из 1
05.09.2018, 15:40
    #39698583
Супер_Пав
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Непонятное поведение ComboBox
Почему-то слетает 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
05.09.2018, 16:33
    #39698633
Дмитрий77
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Непонятное поведение ComboBox
Супер_Пав,

В .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
05.09.2018, 16:43
    #39698637
Супер_Пав
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Непонятное поведение ComboBox
Я просто не ожидал такого, даже подумать не мог. Как итог, в боевую базу попали записи вида "WindowsFormsApplication1.SomeClass". Вот это жесткая подстава оказалась.
...
Рейтинг: 0 / 0
05.09.2018, 22:29
    #39698759
Дмитрий77
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Непонятное поведение ComboBox
Супер_Пав в боевую базу попали записи вида "WindowsFormsApplication1.SomeClass
Еще надо аккуратно использовать всякие .ToString, если не думая то могут быть сюрпризы. Например я в vb.net предпочитаю таки
CStr(value) вместо value.ToString . Надо в контексте смотреть что у тебя код там вычисляет.
...
Рейтинг: 0 / 0
08.09.2018, 16:51
    #39699957
Cat2
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Непонятное поведение ComboBox
Да, неприятный глюк.

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

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



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


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

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

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



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


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


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