tutorial form c# .net winforms windows-7 windows-style-flags

c# - tutorial - system.windows.forms dll



¿Cómo crear un formulario con un borde, pero sin barra de título?(como el control de volumen en Windows 7) (3)

form.Text = string.Empty; form.ControlBox = false; form.FormBorderStyle = FormBorderStyle.SizableToolWindow;

Para una ventana de tamaño fijo, aún debe usar FormBorderStyle.SizableToolWindow , pero puede anular WndProc del WndProc para ignorar las pruebas de impacto que no son del cliente (que se usan para cambiar los cursores de tamaño):

protected override void WndProc(ref Message message) { const int WM_NCHITTEST = 0x0084; if (message.Msg == WM_NCHITTEST) return; base.WndProc(ref message); }

Si desea aplicar realmente el tamaño, también puede establecer MinimumSize igual a MaximumSize en el formulario.

En Windows 7, las ventanas del mezclador de volumen tienen un estilo específico, con un borde grueso y transparente, pero sin barra de título. ¿Cómo recrearé ese estilo de ventana en una ventana de winforms?

Intenté configurar Text to string.Empty, y ControlBox en false, lo que elimina la barra de título, pero luego el borde también desaparece:


form.FormBorderStyle = FormBorderStyle.Fixed3D;


Dado que "Esta edición fue pensada para dirigirse al autor de la publicación y no tiene sentido como una edición. Debería haber sido escrita como un comentario o una respuesta". Presento una edición de la respuesta de Chris como una nueva respuesta.

El código de su respuesta funciona como se describe, excepto que también evita que ocurra un evento de mouse en el área del cliente. Debe devolver 1 (como en HTCLIENT) para solucionarlo.

protected override void WndProc(ref Message message) { const int WM_NCHITTEST = 0x0084; const int HTCLIENT = 0x01; if (message.Msg == WM_NCHITTEST) { message.Result = new IntPtr(HTCLIENT); return; } base.WndProc(ref message); }