wpf - uso - que es una caja de dialogo en visual basic
¿Cuál es la forma más sencilla de obtener el texto seleccionado en un cuadro combinado que contiene solo entradas de texto? (8)
Mi WPF ComboBox contiene solo entradas de texto. El usuario seleccionará uno. ¿Cuál es la forma más sencilla de obtener el texto del ComboBoxItem seleccionado? Responda tanto en C # como en Visual Basic. Aquí está mi ComboBox:
<ComboBox Name="cboPickOne">
<ComboBoxItem>This</ComboBoxItem>
<ComboBoxItem>should be</ComboBoxItem>
<ComboBoxItem>easier!</ComboBoxItem>
</ComboBox>
Por cierto, sé la respuesta, pero no fue fácil de encontrar. Pensé en publicar la pregunta para ayudar a otros. REVISIÓN: He aprendido una mejor respuesta. Al agregar SelectedValuePath = "Content" como un atributo ComboBox, ya no necesito el feo código de conversión. Vea la respuesta de Andy a continuación.
Para aclarar las respuestas de Heinzi y Jim Brissom, aquí está el código en Visual Basic :
Dim text As String = DirectCast(cboPickOne.SelectedItem, ComboBoxItem).Content.ToString()
y C # :
string text = ((ComboBoxItem)cboPickOne.SelectedItem).Content.ToString();
¡Gracias!
Si ya sabe que el contenido de su ComboBoxItem solo será cadenas, solo acceda al contenido como una cadena:
string text = ((ComboBoxItem)cboPickOne.SelectedItem).Content.ToString();
var s = (string)((ComboBoxItem)cboPickOne.SelectedItem).Content;
Dim s = DirectCast(DirectCast(cboPickOne.SelectedItem, ComboBoxItem).Content, String)
Como sabemos que el contenido es una cadena, prefiero un lanzamiento sobre una llamada al método ToString()
.
<ComboBox
Name="cboPickOne"
SelectedValuePath="Content"
>
<ComboBoxItem>This</ComboBoxItem>
<ComboBoxItem>should be</ComboBoxItem>
<ComboBoxItem>easier!</ComboBoxItem>
</ComboBox>
En codigo:
stringValue = cboPickOne.SelectedValue.ToString()
Utilice la DataRowView.Row.Item[Index]
o ItemArray[Index]
para obtener SelectedItem
, donde Index es el índice de la columna en DataTable
utiliza como itemSource
para el cuadro combinado. En su caso, será 0. En lugar de índice, también puede pasar el nombre de la columna:
VB:
Dim sItem As String=DirectCast(cboPickOne.SelectedItem, DataRowView).Row.Item(1).ToString()
DO#
String sItem=((DataRowView)cboPickOne.SelectedItem).Row.Item[1].ToString();
Para obtener SelectedValue puedes usar:
VB:
Dim sValue As String=cboPickOne.SelectedValue.ToString()
DO#
String sValue=cboPickOne.SelectedValue.ToString();
Si agrega elementos en ComboBox como
youComboBox.Items.Add("Data");
Luego usa esto:
youComboBox.SelectedItem;
Pero si agrega elementos por enlace de datos, use esto:
DataRowView vrow = (DataRowView)youComboBox.SelectedItem;
DataRow row = vrow.Row;
MessageBox.Show(row[1].ToString());
Usar cboPickOne.Text
debería darle la cadena.
Solo hice esto.
string SelectedItem = MyComboBox.Text;