4

画面を切り替えたForm後、フォームを中央に配置したいとします。どうすればタスクを実行できますか?

 internal static void SetFormToBiggestMonitor(Form form, bool center = true)
    {
        Screen biggestScreen = FindBiggestMonitor();//assume this works
        form.Location = biggestScreen.Bounds.Location;

        if (center)
        {
            form.StartPosition = FormStartPosition.CenterScreen;
        }
    }
4

3 に答える 3

7

タスクを達成するためのそれほどループのない方法の1つ...

    private static Point CenterForm(Form form, Screen screen)
    {
        return new Point(
                         screen.Bounds.Location.X + (screen.WorkingArea.Width - form.Width) / 2,
                         screen.Bounds.Location.Y + (screen.WorkingArea.Height - form.Height) / 2
                         );
    }
于 2012-10-26T18:58:54.410 に答える
1

位置を設定する前にモニターのオフセットを考慮する必要がありますが、それ以外はかなり単純なはずです。

if (center)
{
      form.Location = new Point
      (
         biggestScreen.WorkingArea.X + ((biggestScreen.WorkingArea.Width + form.Width)/2),
         biggestScreen.WorkingArea.Y + ((biggestScreen.WorkingArea.Height + form.Height)/2)
      );
}

しかし、Form.CenterToScreen()は問題なく機能するはずですが、どうやらMicrosoftはそれを使用することを推奨していませんか?理由はわかりません。

于 2012-10-26T19:08:41.213 に答える
0

これらすべての計算の代わりに、Form.CenterToScreenを使用するとどうなりますか

this.CenterToScreen();
于 2015-06-10T05:42:58.183 に答える