【问题标题】:How to put a window on the right bottom corner on every using the desktop resolution (Winforms)如何在每个使用桌面分辨率的右下角放置一个窗口(Winforms)
【发布时间】:2018-08-31 21:57:30
【问题描述】:

我想获取右下角的位置,以便在 Winforms 中的托盘栏上方放置一个窗口,该窗口使用任何桌面分辨率位于同一位置。

我知道有 SystemParameters 可以为我提供最大高度和宽度,但我不知道如何让窗口进入右下角。

【问题讨论】:

    标签: c# winforms location window


    【解决方案1】:

    将表单的StartPosition设置为Manual,然后设置(在设计器中),然后加载 (this.Load += new System.EventHandler(this.Form_Load);) em> 将 this.Leftthis.Top 设置为请求的值。 (Left = 0 主屏幕左侧,Top 值根据屏幕分辨率、窗口大小计算 (this.Size))

    示例代码(您的代码)

    private void Form_Load(object sender, EventArgs e)
    {
      Rectangle workingArea = Screen.PrimaryScreen.WorkingArea;
      // use 'Screen.AllScreens[1].WorkingArea' for secondary screen
      this.Left = workingArea.Left + workingArea.Width - this.Size.Width;
      this.Top = workingArea.Top + workingArea.Height - this.Size.Height;
    }
    

    (来自设计师;Form.Designer.cs)

      this.StartPosition = System.Windows.Forms.FormStartPosition.Manual;
      this.Text = "Form title";
      this.Load += new System.EventHandler(this.Form_Load);
    

    【讨论】:

    • 计算部分对我来说是最重要的部分,因为我希望窗口的位置直接位于托盘栏上方,并且 X 和 Y 开始(/0 是)在左上角而不是右下角/下角。
    • 抱歉,我没有 C# 代码来获取当前显示工作区。这部分是简单的部分。当前显示的工作区是我很久以前用 C++ 编写的。我手头没有代码,因此您需要自己弄清楚,例如stackoverflow.com/questions/1317235/c-get-complete-desktop-sizemsdn.microsoft.com/en-us/library/…
    • @Quantum :答案已更新。在 C# 中似乎比在 C++ 中更简单(可能是因为我只使用了一个主屏幕而忽略了应用程序启动屏幕)。但不要忘记,此应用程序将窗口移动到右下角而不是托盘栏。
    • 对于主屏幕在标准配置中它应该为零(应该是主屏幕的左上角)。但是当用户将任务栏设置为左侧时,工作区可能从不同于 0(左侧)的位置开始。
    • 我自己找到了一个好方法,但感谢您的帮助。你的 .Left 和 .Top-Ideas 帮助了我 :)
    猜你喜欢
    • 2011-11-29
    • 1970-01-01
    • 2010-10-01
    • 1970-01-01
    • 2022-12-03
    • 2013-07-14
    • 1970-01-01
    • 1970-01-01
    • 2011-04-06
    相关资源
    最近更新 更多