Изменение элементов в ComboBox в Windows Forms - PullRequest
0 голосов
/ 22 марта 2012

У меня есть ComboBox, который может отображать длинный список элементов.В форме есть функция, которая должна изменить отображаемый текст этих элементов, фактически не добавляя и не удаляя их.Привязка данных не происходит, я непосредственно получаю доступ к списку элементов.

Проблема в том, что, если я изменяю какое-либо свойство элемента в списке элементов, он не обновляет текст в комбинированном списке.коробка.Есть кнопка, которая может переместить элемент из ComboBox в другой смежный ComboBox, и когда он перемещается, он отображается правильно, поэтому, похоже, проблема в том, что он просто не перерисовывает его.(), Refresh (), Update (), но это не работает.Полагаю, я мог бы очистить ComboBox и прочитать все, но в этом окне могут храниться тысячи элементов, поэтому я не уверен, что это эффективный способ сделать это.

Ответы [ 3 ]

1 голос
/ 22 марта 2012

Пожалуйста, попробуйте просто установить свойство текста в выпадающем списке:

combobox1.Text = "newText";

Конечно, вам все равно нужно изменить элемент, как и раньше.

0 голосов
/ 16 мая 2016

Вам необходимо выполнить следующие шаги:

  1. получить индекс рассматриваемого элемента
  2. получить отображаемый текст элемента или сам элемент
  3. заменитьотображаемый текст элемента
  4. вставьте элемент обратно с тем же индексом

вот пример кода: (при условии, что ваши элементы имеют тип string )

int itemIndex = comboBox1.Items.IndexOf("yourItem");
string itemText = comboBox1.Items[itemIndex].ToString();
itemText = "yourNewString";
comboBox1.Items.Insert(itemIndex, itemText);

если элементы имеют тип, отличающийся от string , попробуйте следующее:

int itemIndex = comboBox1.Items.IndexOf(/*your item*/);
var item = comboBox1.Items[itemIndex];
//type cast back to the original type
//change the display text i.e. by changing the display member inside your object
comboBox1.Items.Insert(itemIndex, item);

Вы можете перебрать этот фрагмент кода, если ваша функция делает это для несколькихтовар

0 голосов
/ 22 марта 2012

Кажется, что невозможно обновить метки элементов без привязки данных.Поэтому остается только удалить соответствующий элемент (Items.RemoveAt) и вставить его снова (Items.Insert).

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