¿Puedo cambiar el aspecto de un ComboBox de Winforms para que un cuadro combinado con DropDownStyle = DropDownList
se parezca más a uno que es DropDownStyle = DropDown
. La diferencia funcional entre ellos es que el primero no permite los valores ingresados por el usuario, el problema es que el esquema de color predeterminado se ve atenuado y no coincide con los cuadros de texto en el mismo cuadro de diálogo.Aspecto del cuadro combinado
Respuesta
puede obtener DropDown
aparición de DropDownList
estilo, cambiando DrawMode
propiedad a DrawMode.OwnerDrawFixed
y gastos de pintura elemento por sí mismo (por suerte, eso es fácil). Clase de muestra, implementando esta idea:
public class ComboBoxEx : ComboBox
{
public ComboBoxEx()
{
base.DropDownStyle = ComboBoxStyle.DropDownList;
base.DrawMode = DrawMode.OwnerDrawFixed;
}
protected override void OnDrawItem(DrawItemEventArgs e)
{
e.DrawBackground();
if(e.State == DrawItemState.Focus)
e.DrawFocusRectangle();
var index = e.Index;
if(index < 0 || index >= Items.Count) return;
var item = Items[index];
string text = (item == null)?"(null)":item.ToString();
using(var brush = new SolidBrush(e.ForeColor))
{
e.Graphics.TextRenderingHint = System.Drawing.Text.TextRenderingHint.ClearTypeGridFit;
e.Graphics.DrawString(text, e.Font, brush, e.Bounds);
}
}
}
Puede intentar cambiar la propiedad FlatStyle
y ver si obtiene algo más de su agrado. Si realmente quiere que se vea como lo hace con DropDownStyle
conjunto de DropDown
, podría configurar el DropDownStyle
a DropDown
y comer el KeyPress
evento:
private void comboBox1_KeyPress(object sender, KeyPressEventArgs e)
{
e.Handled = true;
}
Aún así, probablemente no haría esto como la aparición de la ComboBox
es una señal visual para el usuario que indica si debería poder escribir en el área de texto o no.
Al menos en win7 que solo cambia el borde. El interior del control sigue siendo un degradado gris similar al fondo del formulario. IIRC en XP la diferencia entre los dos estilos de caída fue mucho menos dramática. –
- 1. Eventos del cuadro combinado VB6
- 2. ¿Mejor cuadro combinado de Javascript?
- 3. Texto del cuadro combinado al escribir
- 4. combinado cuadro de autocompletar
- 5. Obtener el texto seleccionado de un cuadro combinado usando jQuery, por nombre del cuadro combinado?
- 6. Lista desplegable de cuadro combinado
- 7. caso cuadro combinado desplegable sensibles
- 8. cursor escribir de cuadro combinado
- 9. Agregar enum al cuadro combinado
- 10. cambiar el aspecto del cuadro Editar texto en android
- 11. eliminar el rectángulo rojo alrededor del cuadro combinado
- 12. Cómo anular la selección del texto de un cuadro combinado
- 13. preseleccionando el valor del menú desplegable (cuadro combinado) en extjs?
- 14. Jquery UI autocompletar botón del cuadro combinado clic evento
- 15. Evento de celda del cuadro combinado DataGridView en C#
- 16. Selenium WebDriver para seleccionar el elemento del cuadro combinado?
- 17. Cambiar el color anterior del cuadro combinado deshabilitado
- 18. Obtener el texto del cuadro combinado en C#
- 19. seleccionando el elemento del cuadro combinado usando la automatización ui
- 20. Obtener el valor del cuadro combinado en Java swing
- 21. Uso del convertidor de partidas consolidadas en cuadro combinado
- 22. cómo obtener el elemento seleccionado del cuadro combinado
- 23. Comportamiento extraño del control de cuadro combinado de Windows Forms
- 24. WPF - Contenido del cuadro combinado de actualización automática
- 25. Utilizar la lista de cadenas como fuente del cuadro combinado
- 26. Cómo borrar los contenidos del cuadro combinado en vb.net
- 27. cheque nocaut/desmarcar todos cuadro combinado
- 28. cuadro combinado de la unión a otro cuadro combinado en WPF
- 29. Error SystemFontFamilies al vincular al cuadro combinado
- 30. Vinculación de cuadro combinado (jQuery preferiblemente)
Interesante. ¿Es eso algo que escribiste desde cero o sacaste del marco utilizando el reflejo? –
Está escrito desde cero. De hecho, este comportamiento no es realmente esperado. Hace algún tiempo necesité implementar un cuadro combinado con una pintura de elementos personalizada y noté que cambiar la propiedad 'DrawMode' también afecta el estilo de control, forzándolo a' DropDown'. – max
+1, @max: muy agradable! –