[問題]
我寫了一段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 設定——那是白費勁,找不到的,它只能通過編碼來設定。真是齷齪!