将winform定位在屏幕的左下角

时间:2012-09-09 10:08:54

标签: c# .net windows winforms

我正在尝试将一个表单放在屏幕的左下角(在开始按钮上)我有以下代码尝试这样做,但只考虑了屏幕的工作区域 - 所以表单位于开始按钮的正上方:

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)

4 个答案:

答案 0 :(得分:10)

使用Screen.PrimaryScreen.Bounds属性并设置this.TopMost = true。这有效:

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

答案 1 :(得分:4)

工作区通常排除任何任务栏,停靠窗口和停靠工具栏。 使用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中关闭该选项,但不确定。

编辑:

在Windows XP中,您可以将任务栏放在窗口后面。请点击链接:Always on top task bar

正如Ria指出的那样,将this.TopMost设置为真有效并且是更好的选择。

答案 2 :(得分:0)

您可以尝试使用此代码

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

答案 3 :(得分:0)

Ria 's answer是正确的,但没有添加任务栏高度 如果您想要显示图片中的内容,则应使用以下代码:

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;