c# - ocultos - Cómo hacer que una ventana tenga texto en la barra de tareas pero sin barra de título
minimizar aplicacion en barra de tareas c# (4)
¿Cómo puedo hacer que mi ventana no tenga una barra de título pero aparezca en la barra de tareas con un texto descriptivo? Si configuras la propiedad .Text del Formulario, .net le da una barra de título, que yo no quiero.
this.ControlBox = false;
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog;
this.MaximizeBox = false;
this.MinimizeBox = false;
this.ShowInTaskbar = true;
this.Text = "My title for task bar";
Encontré una solución parcial para anular CreateParams:
protected override System.Windows.Forms.CreateParams CreateParams
{
get
{
System.Windows.Forms.CreateParams cp = base.CreateParams;
cp.Style &= ~0x00C00000; // WS_CAPTION
return cp;
}
}
Sin embargo, esto hace que mi ventana cambie de tamaño como si tuviera una barra de título, es decir, es más alto de lo que debería ser. ¿Hay alguna buena solución para esto?
En mi caso, tengo un Formulario con FormBorderStyle = FormBorderStyle.SizableToolWindow
y el siguiente reemplazo de CreateParams
fue el truco (es decir, ahora tengo un formulario sin título y sin margen adicional para el título, pero mantiene el título en la barra de tareas):
protected override System.Windows.Forms.CreateParams CreateParams
{
get
{
var parms = base.CreateParams;
parms.Style &= ~0x00C00000; // remove WS_CAPTION
parms.Style |= 0x00040000; // include WS_SIZEBOX
return parms;
}
}
Simplemente configure el estilo del borde en Ninguno.
this.FormBorderStyle = FormBorderStyle.None;
Un enfoque a considerar podría ser establecer la propiedad FormBorderStyle
de su Form
en None
(en lugar de FixedDialog
).
El inconveniente de este enfoque es que se pierden los bordes de la ventana y la barra de título. El resultado es que pierde la lógica de cambio de tamaño / formateo de formularios que normalmente obtiene "gratis" con Windows Forms; Tendría que lidiar con esto implementando su propia lógica de mover / cambiar el tamaño de forma en los manejadores de eventos MouseDown y MouseMove.
También me interesaría saber sobre mejores soluciones.
Una vez que haya eliminado los bordes con FormBorderStyle, como se mencionó anteriormente, puede hacer que se pueda arrastrar con bastante facilidad. Lo describo en http://www.blackwasp.co.uk/DraggableBorderless.aspx .