valuemember valor usar texto seleccionado recuperar obtener displaymember como c# .net winforms combobox krypton-toolkit

c# - valor - Cómo deseleccionar el texto de un combobox



obtener valor displaymember combobox c# (14)

Tengo un cuadro combinado de criptón que se enlaza con una lista de pares clave-valor. Lo que está sucediendo es que cuando configuro el elemento seleccionado en el código, está resaltando el texto. ¿Cómo puedo evitar esto o deseleccionar el texto?

He intentado lo siguiente:

// 1 combo.Select(0,0); // 2 combo.Focus(); anotherControl.Focus(); // 3 combo.SelectionStart = 0; combo.SelectionLength = combo.Text.Length; // 4 combo.SelectionStart = combo.Text.Length; combo.SelectionLength = 0;

Nada parece funcionar. Cualquier ayuda es apreciada.


''Seleccionar'' no funciona para mí. Pero encontré un truco muy simple. Agregue este derecho en el evento SelectedIndexChanged-Event:

comboBox1.Hide(); comboBox1.Show();

Funciona para mi.


En el evento SelectedIndexChanged, agregue el temporizador que se ejecutará solo una vez después de 10 milisegundos.

new System.Threading.Timer((s) => { comboBox1.Invoke(new Action(() => { comboBox1.Select(0, 0); })); }, null, 10, System.Threading.Timeout.Infinite);


En mi caso, la selección apareció después de cambiar el tamaño. Esto lo resolvió:

textBox.Resize += (sender, args) => { Control c = sender as Control; if (c == null || c.Parent == null) return; c.Focus(); c.Parent.Focus(); };


Esto es lo que hago:

private void faceComboBox_SelectedIndexChanged(object sender, EventArgs e) { this.ActiveControl = cancelButton; }


Logré lograr esto, anulando el evento OnPaint de mi control / ventana y haciendo

combobox1.SelectionLength = 0;


No especificó si el usuario debe poder editar los valores de ComboBox o no. Si no es así, entonces DropDownStyle de ComboBox se debe establecer en ComboBoxStyle.DropDownList . De esta manera, ComboBox solo permitirá seleccionar valores existentes, los usuarios no podrán escribir nuevos valores y el texto nunca se resaltará.


No está seguro de lo que podría estar haciendo en segundo plano, es decir, eventos activados, etc. Sin embargo, en el evento seleccionado seleccionado de combox, puede agregar otro Control.Seleccionar ().

Eso deberia:)


No me importa la edad que tenga. Estamos construyendo una base de conocimiento.

Yo uso D5 (y probablemente las versiones anteriores son las mismas). Necesitas usar:

Combobox.SelLength := 0;

Además, si eso no funciona, este sí: Evita el estilo predeterminado (csDropDown). Y ponlo a:

Combobox.Style := csDropDownList;

como Alex sugirió.

Gracias. ¡Funciona genial!


Probar esto

combo.SelectedText = String.Empty;

Con respecto a su problema con el enfoque: ( MSDN )

Cuando el cuadro combinado pierde el foco, el punto de selección se mueve al principio del texto y cualquier texto seleccionado se deselecciona

Tan extraño; por qué lo siguiente no funcionó:

anotherControl.Focus();


Puede que haya encontrado una solución que funciona:

Si está utilizando un formulario, suscríbase al evento Mostrado del formulario.

O

Si está utilizando un UserControl (como lo soy yo), puede suscribirse al evento VisibleChanged.

En el evento, puede hacer lo siguiente:

foreach (ComboBox cbo in (this.Controls.Cast<Control>().Where(c => c is ComboBox).Select(c => (ComboBox) c))) { cbo.SelectionLength = 0; }

Como un aparte:

Terminé teniendo que hacer esto para un control de usuario en el que agregué ComboBoxes al control y luego tuve que establecer su tamaño de forma dinámica. La configuración del tamaño provocó el resaltado con el que se encontraba el OP.


Sé que ha pasado un tiempo desde que hiciste esta pregunta. Pero aquí es lo que puedes hacer.

combo.selectedindex = -1;


Simplemente debe colocar este código en el evento generado o hacer clic en el botón donde desea deseleccionar el texto de un cuadro combinado

ComboBox1.SelectedItem = null;


Suscríbase al evento "SelectedIndexChanged", que tiene la tarea de establecer el enfoque de ComboBox.

private void comboBox1_SelectedIndexChanged(object sender, EventArgs e) { comboBox1.Focus(); }

Suscríbete al evento "Paint" desde el formulario principal. La deselección tiene lugar en este controlador de eventos:

private void MainForm_Paint(object sender, PaintEventArgs e) { comboBox1.SelectionLength = 0; }


estas 3 lineas me ayudaron

cbInstallationType.SelectionStart = 0; cbInstallationType.SelectionLength = 0; cbInstallationType.TabIndex = 99;

TabIndex no debe ser el primero, por lo que no es el primer elemento en el formulario