2009-06-10 91 views
8

Tengo un formulario configurado en Maximizado, pero por alguna razón está ignorando la barra de tareas y maximizando a toda la pantalla. Es eso típico? ¿Hay alguna solución?La pantalla maximizada ignora la barra de tareas

Estoy ejecutando Windows   XP con una configuración de monitor dual (barra de tareas en la primera ventana/primaria).

+0

Es [ShowInTaskbar] (http://msdn.microsoft.com/en-us/library/system.windows.forms.form. showintaskbar.aspx) propiedad establecida en False? – Shoban

+1

Asigna la propiedad MaximizedBounds. –

Respuesta

6

Una cosa que dejé fuera de la descripción - Desactivé el botón Maximizar. Cuando probé la activación de esa propiedad, la barra de tareas apareció nuevamente. Aparentemente, se asume que si no desea un botón de maximizar está creando una aplicación de tipo kiosco en la que no desea que sus usuarios vean nada más que la pantalla de la aplicación. No es exactamente lo que esperaría, pero funciona, supongo.

3

Establezca el borde del formulario en Ninguno antes de maximizarlo.

Este código funcionará en un solo monitor:

private void Form1_Load(object sender, EventArgs e) 
{ 
    this.FormBorderStyle = FormBorderStyle.None; 
    this.WindowState = FormWindowState.Maximized; 
} 

No he probado el escenario de monitor dual ya no tengo esto en este momento. : P

EDITAR: Yo no entiendo "pantalla maximizada Ignora barra de tareas". ¿Qué significa Ignorar?

¿Desea que su formulario cubra la barra de tareas y complete toda la pantalla?

+0

Quiere decir que su forma cubre toda la pantalla, incluso esconde la barra de tareas que no quiere. –

+0

Para agregar a eso, debe verificar la propiedad FormBorderStyle de su formulario y asegurarse de que NO esté configurado en FormBorderStyle.None. –

3

Si no desea volver a habilitar el botón de maximizar, podría configurar manualmente el tamaño de la ventana:

private void Maximize() 
{ 
    Screen screen = Screen.FromPoint(this.Location); 
    this.Size = screen.WorkingArea.Size; 
    this.Location = Point.Empty; 
} 

(WorkingArea es el área de la pantalla que puede ser utilizada por las aplicaciones, con exclusión de la barra de tareas y otras barras de herramientas)

+0

No funciona - el menú sys maximizar no llama a su método 'Maximize()' –

+1

@ZachSaw, por supuesto que no, ¿por qué lo haría? Es un método que tienes que llamarte a ti mismo. –

+0

¡Eso no aparece como estado maximizado cuando tienes sysmenu popup! –

12

Si está utilizando FormBorderStyle.None entonces es muy simple para asegurarse de que no cubre la barra de tareas cuando se maximizan:

this.MaximumSize = Screen.PrimaryScreen.WorkingArea.Size; 

se w Probablemente funcione para otros estilos de borde y es probablemente la forma más limpia de asegurarse de que su formulario no cubra la barra de tareas.

+5

Probablemente deberías usar 'Screen.FromControl (this)' en lugar de 'Screen.PrimaryScreen'. Si el usuario tiene pantallas múltiples, su control no estará necesariamente en la pantalla principal. –

+0

No funciona en todas las pantallas. Si configura 'MaximumSize' en el evento' OnMove', terminará con un formulario que está restringido al ancho de la pantalla en modo no maximizado (este no es el comportamiento predeterminado). –

+1

No funcionó para mí –

2

La barra de tareas se puede acoplar a la izquierda, arriba, abajo, derecha. Si quieres ventana maximizada y sin barra de tareas superpuestas, utilice este código:

 

...cut... 
    public partial class Form2 : Form 
    { 
     public Form2() 
     { 
      // set default start position to manual 
      this.StartPosition = System.Windows.Forms.FormStartPosition.Manual; 


      // set position and size to the Form. 
      this.Bounds = Screen.PrimaryScreen.WorkingArea; 


     .... 
      InitializeComponent(); 
     } 

...cut... 
0

Al configurar el estilo de borde forma a ninguna forma ocultará la barra de tareas. Para evitar esto, debe establecer manualmente el MaximumSize del formulario. ¡Si Windows oculta automáticamente la barra de tareas, el formulario cubrirá incluso la barra de tareas oculta! Para evitar esto, reduzca la altura del tamaño máximo en un píxel (¡si su barra de tareas está en la parte inferior)!

 Me.MaximumSize = New Size(My.Computer.Screen.WorkingArea.Size.Width, _ 
            My.Computer.Screen.WorkingArea.Size.Height - 1) 
3

Una cosa que queda fuera de la descripción - Me apaga el botón de maximizar. Cuando probé la activación de esa propiedad, la barra de tareas apareció nuevamente. Aparentemente, se asume que si no desea un botón de maximizar está creando una aplicación de tipo kiosco en la que no desea que sus usuarios vean nada más que la pantalla de la aplicación. No es exactamente lo que esperaría, pero funciona, supongo.

Tuve este problema y lo resolvió con la ayuda de Jeff. Primero, establezca el estado de ventana en Maximizado. pero No deshabilite MaximizeBox. Entonces, si usted quiere MaximizeBox a ser desactivado debe hacerlo mediante programación:

private void frmMain_Load(object sender, EventArgs e) 
{ 
    this.MaximizeBox = false; 
} 
Cuestiones relacionadas