2012-04-17 15 views
31

Estoy construyendo una cadena y el código se parece aComboBox.SelectedText no me da la SelectedText

String status = "The status of my combobox is " + comboBoxTest.SelectedText 

estoy usando WinForm en VS2010

El resultado se parece

"El estado de mi cuadro combinado es"

+0

El control ComboBox habrán perdido la selección cuando el enfoque está con hojas –

Respuesta

71

Creo que desee utilizar

String status = "The status of my combobox is " + comboBoxTest.Text 

propiedad SelectedText de MSDN

Obtiene o establece el texto que se selecciona en la parte editable de un Caja combo.

mientras que la propiedad Texto de MSDN

Obtiene o establece el texto asociado a este control.

+1

Lo que hace tan diferente a comboBoxTest.SelectedItem.ToString() –

+3

@CocoaDev: SelectedItem es un objeto y también podría ser una clase, por lo que la conversión a cadena no podría ser Que necesitas. Cuando llene un cuadro combinado, puede establecer elementos como clases, por lo que al mirar SelectedItem puede hacer lo que le plazca ... – Marco

+0

Gracias por la explicación. –

7

Creo que no necesita SelectedText pero puede que tenga

String status = "The status of my combobox is " + comboBoxTest.Text; 
12

Desde el documentation:

Puede utilizar la propiedad SelectedText para recuperar o cambiar el texto seleccionado en un control ComboBox. Sin embargo, debe tener en cuenta que la selección puede cambiar automáticamente debido a la interacción del usuario. Por ejemplo, si recupera el valor de Texto seleccionado en un controlador de evento Click Click, el valor será una cadena vacía. Esto se debe a que la selección se borra automáticamente cuando el foco de entrada se mueve desde el cuadro combinado al botón.

Cuando el cuadro combinado pierde el foco, el punto de selección se mueve al principio del texto y cualquier texto seleccionado se deselecciona. En este caso, al obtener la propiedad SelectedText se recupera una cadena vacía y al establecer la propiedad SelectedText se agrega el valor especificado al principio del texto.

0

o probar este código

String status = "The status of my combobox is " + comboBoxTest.SelectedItem.ToString(); 
+2

No, SelectedItem es el objeto asociado con el elemento actualmente seleccionado y podría ser una clase, ¡no es necesario una cadena! – Marco

1

Así es como me gustaría abordar el problema, asumiendo que usted quiere cambiar el texto de, por ejemplo, una etiqueta

private void comboBoxtest_SelectedIndexChanged(object sender, EventArgs e) 
    { 
     var combotext = comboBoxtest.Text; 
     var status = "The status of my combo box is" + combotext; 
     label1.Text = status; 
    } 
3

Para consigue el artículo seleccionado, tiene que usar la propiedad SELECTEDITEM de comboBox. Y puesto que se trata de un objeto, si quiere asignar a una cadena, hay que convertirlo a cadena, mediante el uso de método ToString():

string myItem = comboBox1.SelectedItem.ToString(); //this does the trick 
1

intente esto: string status

= "La el estado de mi cuadro combinado es "+ comboBoxTest".texto;

2

Me enfrento a este problema 5 minutos antes.

creo que una solución (con Visual Studio 2005) es:

myString = comboBoxTest.GetItemText(comboBoxTest.SelectedItem); 

Perdóname si estoy equivocado.

+0

¡Eso es exactamente! Cuando establecemos una clase para el origen de datos, es un problema común para obtener su texto, esto se resolvió para mí –

Cuestiones relacionadas