使用Windows窗體我想將窗口定位到特定的座標系。我認爲這可以以簡單的方式來完成,但是下面的代碼無法在所有的工作:C#窗口定位
public Form1()
{
InitializeComponent();
this.Top = 0;
this.Left = 0;
}
但是,如果只得到一個句柄窗口,它工作得很好:
public Form1()
{
InitializeComponent();
IntPtr hwnd = this.Handle;
this.Top = 0;
this.Left = 0;
}
你可以看到我沒有使用該指針。我在MSDN發現以下聲明:
Handle屬性的值是Windows HWND。如果手柄尚未創建, ,則引用此屬性將強制創建手柄 。
這是否意味着我們可以在創建其句柄之後設置窗口位置?在內部使用此句柄的setter Top/Left?感謝您的澄清。
不回答你的問題,但你可以重寫'OnHandleCreated'方法來避免調用'this.Handle'。我同意奇怪的是'this.Handle'顯然檢查並創建底層句柄,而其他屬性則依賴於底層句柄。 – 2012-04-26 09:19:27
你是否嘗試在設計師中設置它們? – 2012-04-26 09:20:05
我知道我可以通過很多方法解決它。我只想知道它爲什麼會這樣表現,因爲在其他框架(Qt,wxWidgets,MFC ...)中,您可以在窗口構建期間直接設置窗口位置。 – Fremen 2012-04-26 09:32:07