Visual C# で画面より大きなフォームを表示する

高解像度の画面目いっぱいに作ったフォームをそれより解像度の低いモニターで表示するとフォームの右と下が切れてしまいます。

そんな場合に、フォームサイズを小さくしてスクロールさせる方法を紹介します。

使いづらくはなりますが、とりあえず利用可能に成ります。

 

Excel VBA などではフォームに Zoom というプロパティが有りそれを調節することで、画面の表示倍率そのものを変化できましたが、C# にはないですね。

画面より大きなフォームを表示する


画面より大きなフォームを表示するには次のようにします。


        private void Form1_Load(object sender, EventArgs e)
        {
            SetFormScale();
        }


        private void SetFormScale()
        {
            //スクロール機能を有効にする
            AutoScroll = true;
            //フォームが存在しているディスプレイの作業領域の高さと幅を取得
            double Dh = System.Windows.Forms.Screen.GetWorkingArea(this).Height;
            double Dw = System.Windows.Forms.Screen.GetWorkingArea(this).Width;
            double Fh = this.Size.Height;
            double Fw = this.Size.Width;

            if (Dh < Fh | Dw < Fw)
            {
                double zoomh = Dh / Fh;
                double zoomw = Dw / Fw;
                if (zoomh <= zoomw)
                {
                    this.Height = Convert.ToInt32(Fh * zoomh);
                    this.Width = Convert.ToInt32(Fw * zoomh);
                }
                else
                {
                    this.Height = Convert.ToInt32(Fh * zoomw);
                    this.Width = Convert.ToInt32(Fw * zoomw);
                }
            }
        }