Проблема с Combobox.

Автор Тема: Проблема с Combobox.  (Прочитано 5840 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Тема содержит сообщение с Решением. Нажмите здесь чтобы посмотреть его.

Оффлайн R.I.ChernovАвтор темы

  • ADN Club
  • *****
  • Сообщений: 565
  • Карма: 18
Проблема с Combobox.
« : 14-03-2017, 08:47:28 »
Доброго времени суток, уважаемые форумчане. Ищу вашей помощи в решении нижеописанного вопроса:
Честно говоря, даже не знаю, как лаконично сформулировать проблему. У меня есть параметр в модели в мм. В форме у меня есть комбобокс, куда я передаю значение этого параметра. Текущее значение параметра в модели 100мм. В комбобокс я добавляю значения 100, 200, 300. Суть проблемы в том, что если я сначала заполняю комбобокс значениями (100, 200, 300), а потом передаю параметр 100, то все работает корректно. Но если сначала передать параметр 100мм, а потом заполнить значения (100, 200, 300), то возникает ошибка в методе Combobox.SelectedItem.ToString(). Никак не могу разобраться, с чем это связано. Буду благодарен за любой совет / идею.
П.С. Быть может это важно, в последнием случае начение Combobox.SelectedIndex = -1. Как я понимаю, это означает, что программа считает, что значение комбобокса не соответствует ни 1 из значений списка, который я создал.
В программировании я новичок...но ненадолго! ;)

Оффлайн mikazakov

  • ADN
  • *
  • Сообщений: 751
  • Карма: 195
  • Skype: mikazakov@mail.ru
Re: Проблема с Combobox.
« Ответ #1 : 14-03-2017, 09:08:25 »
Combobox.SelectedIndex = -1
Ну наверное фреймворк считает, что ничего в комбобоксе не выделено.
И что значит "передать параметр" в комбобокс?

По всей видимости нужно сделать так после заполнения списка комбобокса:

Код - C# [Выбрать]
  1. Combobox.SelectedItem=100;



Оффлайн R.I.ChernovАвтор темы

  • ADN Club
  • *****
  • Сообщений: 565
  • Карма: 18
Re: Проблема с Combobox.
« Ответ #2 : 14-03-2017, 09:49:54 »
И что значит "передать параметр" в комбобокс?
Код - C# [Выбрать]
  1. Combobox.Text=100;
В программировании я новичок...но ненадолго! ;)

Оффлайн R.I.ChernovАвтор темы

  • ADN Club
  • *****
  • Сообщений: 565
  • Карма: 18
Re: Проблема с Combobox.
« Ответ #3 : 14-03-2017, 10:05:07 »
Ну наверное фреймворк считает, что ничего в комбобоксе не выделено.
Это да, получается, что я как бы "руками" ввел значение, а не из списка выбрал. Вроде как все логично. Но таксже у меня не работает строка вида:
Код - C# [Выбрать]
  1. double tmp_dbl = Convert.ToDouble(Combobox.Text.ToString());

У меня собственно отсюда возникли все проблемы, я попытался видоизменить код, отчего пришел к Combobox.SelectedItem.ToString(). Нет идей, отчего могла возникать ошибка? Условия все те же. Если сначала задаешь допустимые значения комбобокса а потом присваиваешь  Combobox.Text, то все корректно. Но если сначала ввести текст, то возникает ошибка, при конвертации в дабл.
В программировании я новичок...но ненадолго! ;)

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13829
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Проблема с Combobox.
« Ответ #4 : 14-03-2017, 10:06:11 »
П.С. Быть может это важно, в последнием случае начение Combobox.SelectedIndex = -1. Как я понимаю, это означает, что программа считает, что значение комбобокса не соответствует ни 1 из значений списка, который я создал.
Именно так. Почитай описание: https://msdn.microsoft.com/en-us/library/system.windows.forms.combobox.text(v=vs.110).aspx
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн R.I.ChernovАвтор темы

  • ADN Club
  • *****
  • Сообщений: 565
  • Карма: 18
Re: Проблема с Combobox.
« Ответ #5 : 14-03-2017, 10:12:29 »
Именно так. Почитай описание:
Спасибо, Александр. Я читал. Мне не понятно вот что:
Setting the Text property to null or an empty string ("") sets the SelectedIndex to -1. ... Setting the Text property to a value that is not in the collection leaves the SelectedIndex unchanged.

То есть, если значение Combobox.Text равно пустой строке или "null", индекс становится -1. Если задаешь это значение равным тому, чего нет в коллекции, то индекс остается неизменным. Почему тогда у меня индекс -1? Или он такой по умолчанию? И остается таким же, когда  "лапками" ввожу значение?
В программировании я новичок...но ненадолго! ;)

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13829
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Проблема с Combobox.
« Ответ #6 : 14-03-2017, 10:22:09 »
Или он такой по умолчанию?
Думаю что именно так, пока список пустой.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Отмечено как Решение R.I.Chernov 14-03-2017, 10:25:52

Оффлайн R.I.ChernovАвтор темы

  • ADN Club
  • *****
  • Сообщений: 565
  • Карма: 18
Re: Проблема с Combobox.
« Ответ #7 : 14-03-2017, 10:25:46 »
В общем, если подытожить, то чтобы не было проблем с комбобоксом, надо сначала заполнять коллекцию его значений, и лишь потом передавать значение параметру Combobox.Text. И несмотря на то, что по факту значение, взятое из детали 100,0000000001, программа воспринимает его как 100 (которое есть в списке значений) и меняет Combobox.SelectedIndex на соответствующее значение. Всем спасибо за помощь!
В программировании я новичок...но ненадолго! ;)

Оффлайн R.I.ChernovАвтор темы

  • ADN Club
  • *****
  • Сообщений: 565
  • Карма: 18
Re: Проблема с Combobox.
« Ответ #8 : 14-03-2017, 10:27:41 »
Раз уж обсуждаем комбобоксы, не могли бы вы подсказать, как снять фокус со значение, которое пользователь выбирает из списка? Ну имею ввиду, что вот выбрал он какое-то значение,и оно теперь подсвечивается. Как сделать так, чтобы кликом, например, по пустому месту форму, снялось это выделение?
В программировании я новичок...но ненадолго! ;)

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13829
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Проблема с Combobox.
« Ответ #9 : 14-03-2017, 13:21:25 »
Раз уж обсуждаем комбобоксы, не могли бы вы подсказать, как снять фокус со значение, которое пользователь выбирает из списка? Ну имею ввиду, что вот выбрал он какое-то значение,и оно теперь подсвечивается. Как сделать так, чтобы кликом, например, по пустому месту форму, снялось это выделение?
https://msdn.microsoft.com/en-us/library/system.windows.forms.combobox.selectedindex(v=vs.110).aspx
Цитировать
To deselect the currently selected item, set the SelectedIndex to -1. You cannot set the SelectedIndex of a ComboBox item to -1 if the item is a data-bound item.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн R.I.ChernovАвтор темы

  • ADN Club
  • *****
  • Сообщений: 565
  • Карма: 18
Re: Проблема с Combobox.
« Ответ #10 : 14-03-2017, 13:26:07 »
Спасибо, но мне кажется что свойство SelectedIndex это не совсем то, что я ищу.
В программировании я новичок...но ненадолго! ;)

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13829
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Проблема с Combobox.
« Ответ #11 : 14-03-2017, 14:28:15 »
Спасибо, но мне кажется что свойство SelectedIndex это не совсем то, что я ищу.
А мне кажется, что именно то. Ты же спрашиваешь как снять выделение с выбранного элемента в списке. А тебе "английским по белому" в документации сказано, что нужно установить SelectedIndex в -1.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение