修复表单的位置

时间:2009-02-04 15:09:44

标签: c# .net winforms

我正在启动一个winform应用程序[.NET 3.5,C#],其中应用程序的主要形式从特定的指定位置开始。我在这个

的构造函数中调用以下代码
    private void SetFormPosition()
    {
        this.StartPosition = FormStartPosition.Manual;
        this.Left = Screen.PrimaryScreen.WorkingArea.Right - this.Width;
        this.Top = Screen.PrimaryScreen.WorkingArea.Bottom - this.Height;            
    }

应用程序启动后,我希望在整个应用程序生命周期内保持表单的位置。

也许,我可以“点击”位置事件已更改但不确定这是否会非常优雅。

请建议。

感谢。

3 个答案:

答案 0 :(得分:2)

我同意其他人的意见,你可能不应该这样做,但如果你必须这样做,请继续阅读。

您可以覆盖SetBoundsCore方法并阻止任何移动。我们使用它来防止在某些UserControl实现(例如包含ComboBox或其他固定高度控件的实现)上进行垂直调整大小,但它也负责更改位置。

以下内容可以帮助您入门:

    protected override void SetBoundsCore(
             int x, int y, int width, int height, BoundsSpecified specified)
    {
        x = this.Location.X;
        y = this.Location.Y;
        //...etc...
        base.SetBoundsCore(x, y, width, height, specified);
    }

答案 1 :(得分:2)

您可以将FormBorderStyle设置为None。这有一个额外的好处,就是删除窗口顶部的条形图,这会让用户误以为它们应该可以移动窗口。

答案 2 :(得分:0)

只需更改此

Location = new Point(this.Width,this.Height);