Как изменить текст элемента ComboBox? - PullRequest
5 голосов
/ 11 августа 2011

У меня есть поле со списком с именем столбцов dataGridView. Могу ли я изменить текст отображаемых элементов в поле со списком на любой текст, который я хочу?

for (int i = 0; i < dataGridView1.Columns.Count; i++)
{
    if (dataGridView1.Columns[i].ValueType == typeof(string) && 
        i != 6 && 
        i != 7 && 
        i != 8 && 
        i != 9)
            comboBox1.Items.Add(dataGridView1.Columns[i].Name);
}
comboBox1.SelectedIndex = 0;

Ответы [ 6 ]

4 голосов
/ 10 декабря 2015

Надеюсь, это вам поможет:

combobox.Items[combobox.FindStringExact("string value")] = "new string value";

Метод FindStringExact возвращает индекс текста определенного элемента, так что это может быть лучшим способом изменить текст элемента Combobox.

Примечание: это прекрасно работает на C #.

4 голосов
/ 11 августа 2011

Если значение, которое вы хотите использовать, не подходит в качестве текста в выпадающем списке, я обычно делаю что-то вроде этого:

public class ComboBoxItem<T> {
    public string FriendlyName { get; set; }
    public T Value { get; set; }

    public ComboBoxItem(string friendlyName, T value) {
        FriendlyName = friendlyName;
        Value = value;
    }

    public override string ToString() {
        return FriendlyName;
    }
};

// ...
List<ComboBoxItem<int>> comboBoxItems = new List<ComboBoxItem<int>>();                      
for (int i = 0; i < 10; i++) {
    comboBoxItems.Add(new ComboBoxItem<int>("Item " + i.ToString(), i));
}

_comboBox.DisplayMember = "FriendlyName";
_comboBox.ValueMember = "Value";
_comboBox.DataSource = comboBoxItems;


_comboBox.SelectionChangeCommitted += (object sender, EventArgs e) => {
    Console.WriteLine("Selected Text:" + _comboBox.SelectedText);
    Console.WriteLine("Selected Value:" + _comboBox.SelectedValue.ToString());
};
1 голос
/ 11 августа 2011

Попробуйте это:

ListItem item = comboBox1.Items.FindByText("<Text>");
if (item != null)
{
   item.Text = "<New Text>";
}
0 голосов
/ 03 сентября 2015

Лучший способ сделать это следующим образом:

ui->myComboBox->setItemText(index,"your text");
0 голосов
/ 07 июля 2014

Вы можете просто изменить текст элементов комбинированного поля следующим образом:

my_combo.Items [i_index] = "some string"; 
0 голосов
/ 11 августа 2011

Может быть вместо изменения текста было бы просто удалить элемент из определенного индекса и вставить новый элемент с тем же индексом с новым текстом

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