2011-08-11 12 views
5

Tengo un cuadro combinado archivado con el nombre de las columnas dataGridView, ¿puedo cambiar el texto de los elementos mostrados en el comboBox a cualquier texto que desee?¿Cómo cambio el texto de un elemento 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

Absolutamente, pero ¿pueden publicar algún código? –

+1

Sí, es posible que lo haga. –

+0

Edité la publicación y agregué el código – amer

Respuesta

0

Puede ser en lugar de cambiar el texto que sería fácil de quitar el elemento de un determinado índice e inserte nuevo elemento en el mismo índice con el nuevo texto

1

Prueba esto:

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

Creo que quiere conservar el valor del nombre de la columna, pero mostrar algo más intuitivo o simplemente formateado mejor. – gangelo

+0

Si ese es el caso, ¿no podría establecer el valor del elemento en el nombre real de la columna y cambiar el texto a algo más legible/intuitivo? –

+0

Supongo que está usando Winforms; no creo que pueda hacer eso a menos que establezca el DataSource y llene DisplayMember y ValueMember o use una clase personalizada que separe el texto y el valor. – gangelo

4

Si el valor que desea usar no es adecuado como el texto en un cuadro combinado, generalmente hago algo como esto:

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

Formateado un poco mejor. – gangelo

0

Usted puede cambiar simplemente combinado elementos de cuadro de texto por:

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

La mejor manera de hacerlo que es de esta manera:

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

¿De dónde sacaste eso ?, ¿alguna referencia? porque no encuentro el método setItemText –

+0

Hola, puedes encontrar ese método en la documentación de la clase ** QComboBox **: [link] (http://doc.qt.io/qt-4.8/qcombobox.html#setItemText) –

+1

Eso es QT, no C#. –

2

espero que esto le ayuda a:

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

El método FindStringExact devuelve el índice de un texto de elemento específico, por lo que esta puede ser una mejor manera de cambiar el texto de un elemento Combobox.

Nota: Esto funciona bien en C#.

Cuestiones relacionadas