Подтвердить что ты не робот

Позиция winform в левом нижнем углу экрана

Я пытаюсь позиционировать форму в нижнем левом углу экрана (на кнопке запуска) У меня есть следующий код, который пытается это сделать, но учитывает только рабочую область экрана - так что форма расположена чуть выше кнопки запуска:

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

Ниже демонстрируется демо/экран, чтобы еще раз продемонстрировать, что я пытаюсь сделать:

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

4b9b3361

Ответ 1

Используйте свойства Screen.PrimaryScreen.Bounds и установите this.TopMost = true. это работает:

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

Ответ 2

Рабочая область обычно исключает любую панель задач, закрепленные окна и стыковочные панели инструментов. Использование Screen.PrimaryScreen.Bounds дает вам полную высоту и ширину экрана.

Пример кода выглядит следующим образом:

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

Это, скорее всего, будет показано ниже панели задач, поскольку обычно панель задач устанавливается по умолчанию по умолчанию. Я помню, что есть возможность отключить этот параметр в Windows XP, но не уверен.

EDIT:

В Windows XP вы можете сделать панель задач за окнами. Перейдите по ссылке: Всегда на главной панели задач

Как указано Ria, установка this.TopMost в true работает и является лучшим вариантом.

Ответ 3

Вы можете попробовать с помощью этого кода

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

Ответ 4

Ответ Ria правильный, но он не добавил высоту панели задач.
Если вы хотите точно, что на изображении показано, вы должны использовать этот код:

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;