如何在 C# 中停靠 Windows 窗体?

问题描述 投票:0回答:4

我只是想知道是否可以将 Windows 窗体停靠在用户屏幕顶部?我一直试图通过手动将表单的位置设置为我想要的坐标来做到这一点。但使用此方法,用户只需通过拖动即可更改表单的位置。我想让表单停靠在屏幕的上部,因为此窗口表单将作为我正在制作的项目的菜单。

非常感谢。 :)

c# winforms window dock form-control
4个回答
3
投票

我会考虑使用

Control.Dock
属性以及
DockStyle
枚举值之一。

您可能还需要使用

Layout
,以便您可以根据所选的
DockStyle
以不同的方式布局表单的控件。

在我看来,您需要考虑

Control.Location
属性,以便了解要与表单对接的
DockStyle
值。

编辑#1

您的 Windows 窗体有一个

Dock
属性,因为它继承自
Control

让我们考虑以下几点:

  1. 例如,每次您的表单靠近屏幕右侧或 MDI 容器时,您都想停靠在右侧,对吗? (这里玩一点文字游戏...=P)所以,你必须订阅

    Control.LocationChanged
    活动。

    private void myForm_LocationChanged(object sender, EventArgs e) {
        if (this.Location.X > 900) then
            this.Dock = DockStyle.Right;
        else if (this.Location.X < 150) then
            this.Dock = DockStyle.Left;
        else if (this.Location.Y > 600) then
            this.Dock = DockStyle.Bottom;
        else if (this.Location.Y < 150) then
            this.Dock = DockStyle.Top;
        else
            this.Dock = DockStyle.None;
    }
    

事实上,您应该使用当前的桌面分辨率,并根据它计算出您希望对接发生的比率,而不是常数值。

***免责声明:****此代码按原样提供,未经测试。希望该算法足以指导您根据需要完成对接过程。可根据要求提供进一步的帮助。* =)

对于主窗口(例如 MDI 容器)来说,似乎

Form.DesktopLocation
属性是更适合该工作的工具。至于其他窗口,我会使用看起来像提供的代码示例的东西。

这有帮助吗?

编辑#2

如果您想防止 Form 重叠,也许

Control.BringToFront()
方法可以在调用
Control.Show()
方法之前或之后执行此操作,具体取决于最适合您的方法。


1
投票

经过一些调整,我终于能够让这段代码正常工作。

this.DesktopLocation = new Point((Screen.PrimaryScreen.Bounds.Width / 2 - 420), 0);

我将该行放在 InitializeComponent() 下方,它将我的表单以任何分辨率值停靠在屏幕中心。


0
投票

通过将表单的

FormBorderStyle
设置为
None
,您可以将拖动手柄远离用户,这样他们就无法通过鼠标移动它。

然后你只需要把它放在你想要的地方即可。

如果您确实想取消用户选项,您还可以将

ShowInTaskbar
属性设置为 false


0
投票

我的屏幕尺寸:1920x1080(让我们将 Form1 停靠在左上角)
Private Sub Form1_Load(sender As Object, e As EventArgs) 处理 MyBase.Load
Dim x 作为整数
昏暗整数
x = 屏幕.PrimaryScreen.工作区域.宽度 - 1920
y = 屏幕.主屏幕.工作区域.高度 - 1080
Me.Location = 新点(x, y)
结束子

© www.soinside.com 2019 - 2024. All rights reserved.