2011-08-11 65 views
5

我有一个combobox提交dataGridView列的名称,我可以更改组合框中显示的项目的文本为我想要的任何文本?如何更改ComboBox项目的文本?

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; 
+4

绝对,但你可以请张贴一些代码? –

+1

是的,您可以这样做。 –

+0

我编辑帖子并添加了代码 – amer

回答

0

可能,而不是改变文本这将是简单的从一个特定的索引中删除的项目,并在新的文本

1

相同指数插入新项目试试这个:

ListItem item = comboBox1.Items.FindByText("<Text>"); 
if (item != null) 
{ 
    item.Text = "<New Text>"; 
} 
+0

我认为他想保留列名的价值,但显示更直观或更好的格式。 – gangelo

+0

如果是这种情况,他不能将项目值设置为实际的列名称,并将文本更改为更易读/直观的内容? –

+0

我假设他在使用Winforms;不要以为你可以这样做,除非他设置DataSource并填充DisplayMember和ValueMember,或者使用分隔文本和值的自定义类。 – gangelo

4

如果您要使用的值不适合作为组合框中的文本,我通常会这样做:

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()); 
}; 
+0

格式化好一点。 – gangelo

0

您可以简单地通过改变组合框项目文本:

my_combo.Items [i_index] = "some string"; 
0

你能做到这一点,最好的办法是这样的:

ui->myComboBox->setItemText(index,"your text"); 
+0

你从哪里得到的?,有没有参考?因为我找不到setItemText方法 –

+0

嗨,您可以在** QComboBox **类文档中找到该方法:[link](http://doc.qt.io/qt-4.8/qcombobox.html#setItemText) –

+1

这是QT,而不是C#。 –

2

我希望这可以帮助你:

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

FindStringExact方法返回特定项目文本的索引,因此这可以是更改Combobox项目文本的更好方法。

注意:这适用于C#。

相关问题