Windows.Form ComboBox Невозможно установить свойство SelectedValue для несвязанного элемента управления - PullRequest
3 голосов
/ 12 июня 2009

Я не могу установить значение, выбранное по умолчанию для выпадающего списка. Вот мой код:

         System.Console.WriteLine("Current Tag Org Id = " + CurrentTag.Org.OrgId);
         ddlRUC.SelectedValue = CurrentTag.Org.OrgId;
         System.Console.WriteLine("ddlRUC selected value = " + ddlRUC.SelectedValue);

Вот вывод: Текущий идентификатор тега организации = 285 ddlRUC выбранное значение =

Обратите внимание, что ddlRUC.SelectedValue не было установлено в 285. Нужно ли связывать источник данных, чтобы использовать свойство SelectedValue? Если да, то как мне установить элемент по умолчанию, показанный в выпадающем списке, который не связан?

Ответы [ 7 ]

11 голосов
/ 12 июня 2009

Свойство SelectedValue будет работать только для списка с привязкой к данным. Если вы можете создать свои элементы списка в List <>, вы можете затем связать список с элементом управления, и SelectedValue будет работать так, как вам бы хотелось.

11 голосов
/ 12 июня 2009

У выпадающего списка (например, списка) есть 2 механизма для выбора. Или:

  1. Вы назначаете список источнику данных свойство и установите ValueMember и DisplayMember к именам свойства элементов этого списка. Или

  2. Вы заполняете свойство Items объекты на ваш выбор, ToString() будет отображаться.

В сценарии 1) вы можете использовать SelectedValue для получения / установки выбора на основе ValueMember.

в сценарии 2) вместо SelectedValue используется свойство SelectedItem

Итак, вопрос в том, как вы заполняете пункты?

4 голосов
/ 26 февраля 2012

Я столкнулся с этой проблемой, тратя впустую драгоценное время, потому что значение в моем списке было типом int, отличным от значения, которое я пытался присвоить SelectedValue, например. int32 против int16. То, что сводит вас с ума, так это то, что нет ошибок компиляции или исключений во время выполнения. Это просто не работает. Получите типы int, чтобы они соответствовали, и это прекрасно работает! Обратите внимание, что для связки необходимо связать.

0 голосов
/ 12 июня 2009

В документации для SelectedValue говорится, что свойство вернет "объект, содержащий значение члена источника данных, указанного свойством ValueMember". В документации по свойству ValueMember указано, что оно представляет имя свойства объекта в коллекции, которое назначено свойству DataSource.

Так что да, ValueMember работает только вместе с источником данных с привязкой к данным.

0 голосов
/ 12 июня 2009

Есть ли у элементов в вашем выпадающем списке значения? Вы можете использовать Items.FindByText (текст строки) или Items.FindByValue (значение строки), чтобы вернуть искомый элемент ListItem.

0 голосов
/ 12 июня 2009

Я, возможно, неправильно понимаю, что именно вы пытаетесь выполнить, но ComboBox либо должен иметь элементы (я думаю, что он имеет. Элементы, как ListBox), либо он должен быть связан с источником данных, прежде чем может быть элемент по умолчанию.

0 голосов
/ 12 июня 2009

Есть ли в вашем несвязанном ComboBox 286 предметов? В противном случае этот идентификатор ничего не будет значить для него.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...