2011-12-14 71 views
3

我在剛剛創建但未顯示的表單上調用System.Windows.Forms ... SetDesktopBounds(x,y,width,height)。當我顯示錶單時,它不會進入SetDesktopBounds位置,而是出現在其他位置。讓SetDesktopBounds堅持

如果我顯示錶單,然後SetDesktopBounds,然後隱藏它...它將在我下次顯示它。任何人都知道這裏發生了什麼?我不想事先做一個表演,因爲當我設置它時,你會看到表單閃爍。

在調用SetDesktopBounds之前調用Activate和/或CreateControl也不起作用。

謝謝!

回答

3

如果您在窗體的Load事件觸發之前調用它,您將無法獲得滿意的結果。直到此時才知道窗口的實際大小,當創建本地窗口時,用戶首選項和重新縮放將會生效。如果您在加載後執行此操作,則可以看到重新定位。所以這是最好的:

static void Main() { 
     Application.EnableVisualStyles(); 
     Application.SetCompatibleTextRenderingDefault(false); 
     var main = new Form1(); 
     main.Load += delegate { main.SetDesktopBounds(100, 100, 300, 300); }; 
     Application.Run(main); 
    } 
+0

這太好了!謝謝..我想有沒有簡單的方法來傳遞參數? f.Load + =委託{f.SetDesktopBounds(x,y,width,height); }; //失敗:( – Darrell 2011-12-14 16:45:31