Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/289.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在C#中停靠windows窗体?_C#_Winforms_Window_Dock_Form Control - Fatal编程技术网

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

如何在C#中停靠windows窗体?,c#,winforms,window,dock,form-control,C#,Winforms,Window,Dock,Form Control,我只是想知道是否可以将windows窗体停靠在用户屏幕的顶部?我一直试图通过手动将表单的位置设置为我想要的坐标来实现这一点。但是,使用此方法,用户只需拖动表单即可更改表单的位置。我想让窗体停靠在屏幕的上部,因为这个窗口窗体将作为我正在制作的项目的菜单 非常感谢。:) >我会考虑使用属性和枚举值中的一个。 您可能还需要使用,以便根据所选的DockStyle对表单控件进行不同的布局 你需要在我的角度考虑这个属性,这样你就可以知道哪一个 DOKStys< /Cord>值来将表单与.p/p>停靠。 编辑

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


非常感谢。:)

>我会考虑使用属性和枚举值中的一个。 您可能还需要使用,以便根据所选的
DockStyle
对表单控件进行不同的布局

你需要在我的角度考虑这个属性,这样你就可以知道哪一个<代码> DOKStys< /Cord>值来将表单与.p/p>停靠。 编辑#1

您的Windows窗体具有一个从
控件继承的
Dock
属性

我们考虑如下:

  • 例如,每次表单靠近屏幕右侧或MDI容器右侧时,您都希望停靠右侧,对吗?所以,你必须订阅这个活动

    private void myForm\u位置已更改(对象发送方,事件参数e){
    如果(此.Location.X>900),则
    this.Dock=DockStyle.Right;
    否则,如果(此.Location.X<150),则
    this.Dock=DockStyle.Left;
    否则,如果(此.Location.Y>600),则
    this.Dock=DockStyle.Bottom;
    否则,如果(此位置Y<150),则
    this.Dock=DockStyle.Top;
    其他的
    this.Dock=DockStyle.None;
    }
    
  • 事实上,您应该使用当前桌面分辨率,而不是常量值,并根据它计算您希望停靠的位置的比率

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

    属性似乎是与主窗口(例如MDI容器)相同的作业的正确工具。至于其他窗口,我将使用类似于提供的代码示例的内容

    这有用吗

    编辑#2


    如果您想防止表单重叠,可能该方法可以在调用该方法之前或之后执行,具体取决于最适合您的方法。

    因此,经过一些调整后,我终于能够使该代码正常工作

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

    我将该行放在InitializeComponent()下面,它以任何分辨率值将我的表单固定到屏幕中心

    通过将表单的
    FormBorderStyle
    设置为
    None
    ,可以将拖动手柄从用户手中移开,这样用户就无法通过鼠标移动它

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


    如果您确实想删除用户选项,还可以将
    ShowInTaskbar
    属性设置为false

    hello,谢谢您的回复。我对使用VisualStudio2008的广泛功能有点陌生,我不知道如何使用Control.Dock属性。你能给我举一些例子说明我如何使用这些属性吗?谢谢:)这是为了在表单中停靠控件,而不是为了停靠整个表单。@Jouke Van Der Maas:我想你没有阅读我所有的答案。我提到了
    DesktopLocation
    属性,即用于将整个窗口固定在桌面上。此外,我认为在OP将他的想法细化后,这可能是一个更好的工作工具。请相应地修改您的评论。@Will Marcouiller您必须已编辑,我现在将删除我的否决票。没关系,除非你再编辑一次,否则我不能。@Jouke Van Der Maas:如果你愿意的话,我编辑了我的答案,以删除你的反对票。但是,请查看您的评论年龄与我的编辑年龄。在你发表评论之前,我已经编辑了4个小时。不管怎样,最重要的是我们现在都同意我的问题可能会有所帮助。
    this.DesktopLocation = new Point((Screen.PrimaryScreen.Bounds.Width / 2 - 420), 0);