visuales visual studio poner insertar formularios controles control comunes componentes como botones boton agregar c# .net winforms

c# - studio - control de formularios visual basic



¿Cómo hacer que un control se vea como ComboBox con estilos visuales habilitados? (2)

Tengo un control que está modelado en un ComboBox . Quiero renderizar el control para que el borde de control se vea como el de un ComboBox estándar de Windows . Específicamente, he seguido la documentación de MSDN y todo el procesamiento del control es correcto, excepto para el renderizado cuando el control está deshabilitado.

Para que quede claro, esto es para un sistema con Estilos visuales habilitados. Además, todas las partes del control se procesan correctamente, excepto el borde alrededor de un control desactivado, que no coincide con el color de borde del ComboBox desactivado.

Estoy usando la clase VisualStyleRenderer . MSDN sugiere usar el elemento VisualStyleElement.TextBox para la parte TextBox del control ComboBox , pero un TextBox deshabilitado estándar y un ComboBox deshabilitado estándar dibujan ligeramente diferente (uno tiene un borde gris claro, el otro un borde azul claro).

¿Cómo puedo obtener una representación correcta del control en un estado deshabilitado?


¿Son útiles algunos de los métodos de ControlPaint para esto? Eso es lo que suelo usar para los controles personalizados.


No estoy 100% seguro de que esto es lo que estás buscando, pero deberías echarle un vistazo al VisualStyleRenderer en el espacio de nombres System.Windows.Forms.VisualStyles.

  1. Clase VisualStyleRenderer (MSDN)
  2. Cómo: Renderizar un Elemento de Estilo Visual (MSDN)
  3. VisualStyleElement.ComboBox.DropDownButton.Disabled (MSDN)

Como VisualStyleRenderer no funcionará si el usuario no tiene habilitados los estilos visuales (es posible que ejecute el "modo clásico" o un sistema operativo anterior a Windows XP), siempre debe tener una alternativa a la clase ControlPaint.

// Create the renderer. if (VisualStyleInformation.IsSupportedByOS && VisualStyleInformation.IsEnabledByUser) { renderer = new VisualStyleRenderer( VisualStyleElement.ComboBox.DropDownButton.Disabled); }

y luego hazlo así al dibujar:

if(renderer != null) { // Use visual style renderer. } else { // Use ControlPaint renderer. }

¡Espero eso ayude!