2

3つのパネルを持つWindowsフォームアプリケーションを開発しようとしています

パネル1(FileBrowsePanel):-テキストボックスの制約、参照ボタン

パネル2(SearchCriteriaPanel):- Lable From Date、ToDateDateTimePickerコントロールFromDateおよびToDate各DateTimePickerコントロールのチェックボックス2つのTextBoxおよびListBox2つのボタン検索およびリセット

パネル3(DisplayDataPanel):-ブラウズファイルパスからのデータを表示するListView

パネル4(DeleteCriteriaPanel):-削除ボタンを使用してリストビューとファイルからデータを削除するDateTimePickerコントロールがあります

実際の問題は、画面の解像度を変更すると、すべてのパネルとそのパネルのコントロールがフォームの幅と高さのコードから外れることです。

void LoadWindowsSetting()
        {
            this.SuspendLayout();
            int i_StandardHeight = 768;//Developer Desktop Height Where the Form is Designed
            int i_StandardWidth = 1024; ;//Developer Desktop Width Where the Form is Designed
            int i_PresentHeight = Screen.PrimaryScreen.WorkingArea.Height- SystemInformation.CaptionHeight;
            int i_PresentWidth = Screen.PrimaryScreen.Bounds.Width;
            float f_HeightRatio = new float();
            float f_WidthRatio = new float();
            f_HeightRatio = (float)((float)i_PresentHeight / (float)i_StandardHeight);
            f_WidthRatio = (float)((float)i_PresentWidth / (float)i_StandardWidth);
            foreach (Control c in this.Controls)
            {
                if (c.GetType().ToString() == "System.Windows.Forms.Panel")
                {
                    // c.SetBounds(Convert.ToInt32(c.Bounds.X * f_WidthRatio), Convert.ToInt32(c.Bounds.Y * f_WidthRatio), Convert.ToInt32(c.Bounds.Width * f_WidthRatio), Convert.ToInt32(c.Bounds.Height * f_HeightRatio));
                }
                if (c.HasChildren)
                {
                    foreach (Control cChildren in c.Controls)
                    {
                        cChildren.SetBounds(Convert.ToInt32(cChildren.Bounds.X * f_WidthRatio), Convert.ToInt32(cChildren.Bounds.Y * f_WidthRatio), Convert.ToInt32(cChildren.Bounds.Width * f_WidthRatio), Convert.ToInt32(cChildren.Bounds.Height * f_HeightRatio));
                    }
                    c.SetBounds(Convert.ToInt32(c.Bounds.X * f_WidthRatio), Convert.ToInt32(c.Bounds.Y * f_WidthRatio), Convert.ToInt32(c.Bounds.Width * f_WidthRatio), Convert.ToInt32(c.Bounds.Height * f_HeightRatio));
                }
                else
                {
                    c.SetBounds(Convert.ToInt32(c.Bounds.X * f_WidthRatio), Convert.ToInt32(c.Bounds.Y * f_WidthRatio), Convert.ToInt32(c.Bounds.Width * f_WidthRatio), Convert.ToInt32(c.Bounds.Height * f_HeightRatio));
                }
            }
            btnBrowse.Height = txtBrowseFilePath.Height + 1;
            btnSubmit.Height = btnBrowse.Height;
            btnReset.Height = btnBrowse.Height;
            panelSearch.Height += listBoxLogType.Height;

            int leftSpacePanelBrowse = (this.Width - panelBrowse.Width) / 2;
            int leftSpacePanelSearch = (this.Width - panelSearch.Width) / 2;
            int leftSpacePanelLogList = (this.Width - panelLogList.Width) / 2;
            int leftSpacePanelDeleteLog = (this.Width - panelDeleteLog.Width) / 2;

            panelBrowse.Location = new System.Drawing.Point(leftSpacePanelBrowse - 8, 25);
            panelSearch.Location = new System.Drawing.Point(leftSpacePanelSearch - 8, panelBrowse.Height + 40);
            panelLogList.Location = new System.Drawing.Point(leftSpacePanelLogList - 8, panelSearch.Height + 140);
            progressBarFileLoad.Location = new System.Drawing.Point((this.Width / 2) - 100, panelLogList.Bounds.Y + panelLogList.Height + 5);
            panelDeleteLog.Location = new System.Drawing.Point(leftSpacePanelDeleteLog - 8, panelLogList.Bounds.Y + panelLogList.Height + progressBarFileLoad.Height + 20);

            this.ResumeLayout(false);
            Invalidate();
            Focus();
        }

だから私は画面の解像度が変更されたときに制御を防ぐことができます

4

1 に答える 1