C# 表單案頭定位問題 轉

來源:互聯網
上載者:User

[問題]
我寫了一段C#表單代碼,運行時沒有按我指定的案頭位置顯示。不知道是為什嗎?這段代碼如下:

 

public class MyForm : Form
{
  MyForm()
  {
    Text = "Why doesn't this form go where I want it to go?" ;
    DesktopLocation = new System.Drawing.Point (500, 500) ;
  }
  static void Main()
  {
    Run(new MyForm());
  }
}

表單中的標題列顯示正常,但DesktopLocation好象沒起作用。

[回答]
DesktopLocation是可以隨心所欲地設定的,但MS .NET Framework並不會注意你的設定,除非象下面這樣同時設定 StartPosition:

StartPosition = Form.StartPosition.Manual;

    顧名思意,不難琢磨出這行代碼是幹什麼用的,Form.StartPosition 告訴 .NET Framework 從哪裡開始表單顯示。可能的值有:CenterParent、CenterScreen、Manual、WindowsDefaultBounds 和 WindowsDefaultLocation。StartPosition預設為WindowsDefaultLocation,CreateWindow 等價於 CW_USEDEFAULT。
    有人肯定會問:Location 和 DesktopLocation 之間有什麼區別啊?答案是:Location 是相對於螢幕而言的,而 DesktopLocation 是相對於案頭工作區——也就是除工作列以外的螢幕地區。要是這樣的話,就得考慮某個使用者哪根神經不對勁,將工作列拉寬充滿整個螢幕。
    如果發生這種事情,設定 Form.Location = (0,0) 導致部分表單被隱藏,而 DesktopLocation = (0,0) 使一切都要重新考慮,DesktopLocation 也可用於多監視器系統。(如果你曾針對牆式電漿螢幕編過程式,就會清楚)。此外,如果你想在Visual Studio 的屬性視窗中找到 DesktopLocation 設定——那是白費勁,找不到的,它只能通過編碼來設定。真是齷齪!

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.