2012-09-09 18 views
12

Próbuję umieścić formularz w lewym dolnym rogu ekranu (na przycisku startowym) Mam następujący kod, który próbuje to zrobić, ale bierze tylko pod uwagę stanowią obszar roboczy ekranu - więc forma jest umieszczony tuż nad przyciskiem start:Pozycja WinForm w lewym dolnym rogu ekranu

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

Demo/ekran jest poniżej celu dalszego wykazania, co próbuję zrobić:

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

+4

nie mogą się nakładać pasku zadań lub przycisk Start. –

+5

Jeśli zainstalowałem twoje oprogramowanie i ustawiło się tak, że celowo ukrywa mój przycisk startowy, natychmiast go odinstaluję. – Rotem

+1

@Hans Passant Zobacz odpowiedź – user1559618

Odpowiedz

10

Użyj właściwości Screen.PrimaryScreen.Bounds i ustaw this.TopMost = true. to działa:

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

Dziękuję, tak to działa, pomimo tego, co wszyscy mówią :) – user1559618

+0

+1, a także wysokość paska zadań dodanego do kodu, jak na zdjęciu. – hamed

0

Możesz spróbować z tym kodem

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

przejdzie za pasek zadań. – TigOldBitties

3

Obszar roboczy zwykle wyklucza pasek zadań, zadokowane okna i zadokowane paski narzędzi. Korzystanie z Screen.PrimaryScreen.Bounds zapewnia pełną wysokość i szerokość ekranu.

Próbkę kodu jest następujący:

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; 
     } 

To najprawdopodobniej pokaże poniżej paska zadań jak zwykle bar zadanie ma zostać na wierzchu domyślnie. Pamiętam, że była opcja wyłączenia tej opcji w Windows XP, ale nie jestem tego pewien.

EDIT:

w systemie Windows XP można zrobić pasek zadań iść za oknami. Kliknij link: Always on top task bar

Jak wskazał Ria, ustawienie this.TopMost na prawdziwe działa i jest lepszym rozwiązaniem.

+0

Szukałem sposobu ustawienia okna na pasku startowym i kodu do tego.StartPosition = FormStartPosition.Manual; był kawał, którego mi brakowało ... Dzięki! – ChronoFish

0

Numer Ria 's answer jest poprawny, ale nie dodała wysokości paska zadań.
Jeśli chcesz dokładnie to, co na zdjęciu pokazanym, należy użyć tego kodu:

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; 
Powiązane problemy