2012-06-21 9 views
6

Me gustaría poder agregar el botón de ayuda en mi formulario de win, pero mantener los botones maxmimize y minimize, pero el estándar de Windows es deshabilitar ambos para poder mostrar el botón de ayuda .Añadir botón de ayuda, pero mantener maximizar y minimizar

Ya hay una pregunta similar: How to include help '?' in title bar of winform - pero en esta pregunta el que hizo la pregunta se contenta con la eliminación de los 2 botones para la ayuda a mostrar.

¿Existe la posibilidad de tener botones de ayuda, máximo, mínimo y cerrado al mismo tiempo?

Gracias.

+1

Sí, pero ¿has leído esa respuesta? Sugiere que tendrías que recrear la barra de título tú mismo. Eso es mucho trabajo por tan poca ganancia. – LarsTech

+0

@LarsTech - Esperaba que hubiera una forma sin recodificar por completo el borde. – Axxelsian

Respuesta

6

Windows no admite mostrar ambos. Una solución alternativa es proporcionar su propio botón para disparar la misma acción. Colóquelo en algún lugar cerca de la esquina superior derecha. Usted activa esto enviándose un mensaje WM_SYSCOMMAND, tal como lo hace el botón de ayuda estándar. De esta manera:

private void Help_Click(object sender, EventArgs e) { 
     Help.Capture = false; 
     SendMessage(this.Handle, WM_SYSCOMMAND, (IntPtr)SC_CONTEXTHELP, IntPtr.Zero); 
    } 

    private const int WM_SYSCOMMAND = 0x112; 
    private const int SC_CONTEXTHELP = 0xf180; 
    [System.Runtime.InteropServices.DllImport("user32.dll")] 
    private static extern IntPtr SendMessage(IntPtr hWnd, int msg, IntPtr wp, IntPtr lp); 

Asume que el nombre del botón es "Ayuda".

+0

No me di cuenta de que podría usar un botón que creo para disparar la misma acción. Gracias. – Axxelsian

+0

En realidad, parece que Windows admite ambos, como puede ver al abrir la última versión de Word. De hecho, incluso pusieron otro botón para controlar la cinta. Es solo que, por alguna razón, esto no se admite correctamente en Windows Forms ... – glopes

+2

Las aplicaciones de Office usan un marco personalizado, no el marco de Windows estándar. Cosas agradables que puede hacer cuando tiene cientos de programadores trabajando en un producto. –

1

Una forma de hacerlo es dibujar su propio borde.

FormBorderStyle = None 

Ahora construya su propia área de subtítulos. Esto no es trivial porque tiene que manejar eventos de cambio de tamaño de arrastre, transparencia si desea esquinas redondeadas, etc.

Cuestiones relacionadas