2012-09-09 26 views
12

Estoy tratando de colocar un formulario en la esquina inferior izquierda de la pantalla (en el botón de inicio) Tengo el siguiente código que intenta hacer esto, pero solo toma en tener en cuenta el área de trabajo de la pantalla - por lo que la forma se coloca justo encima del botón de inicio:Posición winform en la esquina inferior izquierda de la pantalla

int x = Screen.PrimaryScreen.WorkingArea.Left + this.Width; 
int y = Screen.PrimaryScreen.WorkingArea.Bottom - this.Height; 
this.Location = new Point(x, y); 

Una demo/pantalla es de abajo para demostrar aún más lo que yo estoy tratando de hacer:

[Demo Screen](http://i.stack.imgur.com/9mTjj.png)

+4

No se puede solapar el botón Inicio de la barra de tareas o. –

+5

Si instalé su software y se posicionó de manera que oculte intencionalmente mi botón de inicio, lo desinstalaría inmediatamente. – Rotem

+1

@ Hans Passant Ver la respuesta – user1559618

Respuesta

10

Utilice Screen.PrimaryScreen.Bounds propiedades y establezca this.TopMost = true. esto funciona:

int y = Screen.PrimaryScreen.Bounds.Bottom - this.Height; 
this.Location = new Point(0, y); 
this.TopMost = true; 
+0

Gracias, sí, esto funciona, a pesar de lo que dicen todos :) – user1559618

+0

+1 y también se agregó la altura de la barra de tareas al código como en la imagen. – hamed

0

Puedes probar con este código

Rectangle workingArea = Screen.GetWorkingArea(this); 
this.Location = new Point(0, 
          workingArea.Bottom - Size.Height); 
+1

va detrás de la barra de tareas – TigOldBitties

3

El área de trabajo normalmente excluye cualquier barra de tareas, ventanas acopladas y barras de herramientas acopladas. El uso del Screen.PrimaryScreen.Bounds le proporciona la altura y el ancho completos de su pantalla.

Un código de ejemplo es el siguiente:

public Form1() 
     { 
      InitializeComponent(); 
      Rectangle r = Screen.PrimaryScreen.WorkingArea; 
      this.StartPosition = FormStartPosition.Manual; 
      this.Location = new Point(0, Screen.PrimaryScreen.Bounds.Height - this.Height); 
      this.TopMost = true; 
     } 

Esto muy probablemente mostrará debajo de la barra de tareas como suele barra de tareas está dispuesto a ser en la parte superior de forma predeterminada. Recuerdo que había una opción para desactivar esa opción en Windows XP, aunque no estoy seguro.

EDIT:

en Windows XP puede hacer que la barra de tareas de ir detrás de las ventanas. Siga el enlace: Always on top task bar

Según lo señalado por Ria, establecer el this.TopMost en trabajos verdaderos y es una mejor opción.

+0

Estaba buscando cómo colocar la ventana en la parte superior de la barra de inicio y su código para esto.StartPosition = FormStartPosition.Manual; era la pieza que me faltaba ... ¡Gracias! – ChronoFish

0

El Ria 's answer es correcta, pero no agregó la altura barra de tareas.
Si desea exactamente lo que en la imagen se muestra, se debe utilizar este código:

int nTaskBarHeight = Screen.PrimaryScreen.Bounds.Bottom - 
              Screen.PrimaryScreen.WorkingArea.Bottom; 
Rectangle workingArea = Screen.GetWorkingArea(this); 
this.Location = new Point(0, workingArea.Bottom - Size.Height + nTaskBarHeight); 
this.TopMost = true; 
Cuestiones relacionadas