2011-12-14 2 views
3

作成したばかりのフォームにSystem.Windows.Forms ... SetDesktopBounds(x、y、width、height)を呼び出していますが、表示されません。私がフォームを表示すると、それは私のSetDesktopBoundsのスポットには行きませんが、他の場所に表示されます。SetDesktopBoundsを固定する方法

フォームを表示してからSetDesktopBoundsを次に非表示にすると、と表示されます。誰がここで何が起こっているのか知っていますか?ショーを前もってやりたくないのは、私が設定したように、あなたはそのフォームのちらつきを感じるからです。

SetDesktopBoundsを呼び出す前にActivateまたはCreateControlを呼び出しても機能しません。

ありがとうございます!

答えて

3

フォームのLoadイベントが発生する前に呼び出すと、結果が得られません。それまではウィンドウの実際のサイズは分かりませんでした。ネイティブウィンドウが作成されると、ユーザーの設定と再スケーリングが有効になります。 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); }; // fail :( – Darrell

+0

だから私は匿名メソッドを提案したので、引数は必要ありません。widthとheightのローカル変数を作成するだけです。 –

関連する問題