4

私はVB6から来たC#プログラミングにかなり慣れていないので、優しくしてください:P

パネルを使用してコントロールをグループ化し(つまり、パネルにはテキストボックス、ラベル、リストビューなどが含まれます)、実行時にパネルを整列させて、コントロールが異なる解像度で整列するようにしました。ただし、これは Panel の Paint ルーチン (?) から実行しています。

すなわち:

private void pnlTop_Paint(object sender, PaintEventArgs e)
    {
        btnExit.Location                = new Point(this.Width - (this.Left + lblTitleMain.Left + btnExit.Width), 10);
        btnMinimize.Location            = new Point(this.Width - (this.Left + lblTitleMain.Left + (btnExit.Width * 2)), 10);
        btnSettings.Location            = new Point(this.Width - (this.Left + lblTitleMain.Left + (btnExit.Width * 2 + btnExit.Width)), 10);

        lblTitleMain.Left               = (((this.ClientSize.Width - lblTitleMain.Width) / 2) / 2) / 2;
        lblTitleMain.Top                = btnExit.Top + lblTitleMain.Height;

        int intMenuY                    = lblTitleMain.Bottom + 5;
        lnkMenuSystem.Location          = new Point(lblTitleMain.Left + 3, intMenuY);
        lnkMenuDeployment.Location      = new Point(lnkMenuSystem.Right + 50, intMenuY);
        lnkMenuTables.Location          = new Point(lnkMenuDeployment.Right + 50, intMenuY);
        lnkMenuTCP.Location             = new Point(lnkMenuTables.Right + 50, intMenuY);
        lnkMenuDCM.Location             = new Point(lnkMenuTCP.Right + 50, intMenuY);
        lnkMenuProcessData.Location     = new Point(lnkMenuDCM.Right + 50, intMenuY);
        lnkMenuGenerateReports.Location = new Point(lnkMenuProcessData.Right + 50, intMenuY);

        lineMenuButtom.StartPoint       = new Point((((this.ClientSize.Width - lblTitleMain.Width) / 2) / 2) / 2, lnkMenuSystem.Top + lnkMenuSystem.Height + 10);
        lineMenuButtom.EndPoint         = new Point(this.Width - (this.Left + lblTitleMain.Left), lnkMenuSystem.Top + lnkMenuSystem.Height + 10);

        lnkMenuErrorMessage.Location    = new Point(lnkMenuSystem.Left, lineMenuButtom.Y1+5);
        lnkMessageWelcome.Location      = new Point(lineMenuButtom.X2 - lnkMessageWelcome.Width, lineMenuButtom.Y2 + 5);
        GlobalVariables.intGeneralLeft  = lineMenuButtom.StartPoint.X;
        GlobalVariables.intGeneralWidth = lineMenuButtom.X2;
    }

私が聞きたいのはこれです: これはそれを行う適切な方法ですか?

その理由は、アプリケーションが古いシステムで実行されたときにパフォーマンスに影響するかどうかわからないためです (2g RAM の Pentium 4 HT または同等のシステムを搭載した XP で使用されると仮定)。

4

1 に答える 1

6

いいえ; それは確かに間違ったやり方です。
Paint非常に頻繁に発砲できます。できる限り作業を少なくする必要があります。(そして、レイアウトを変更するべきではありません)

代わりに、デザイナで プロパティAnchorDockプロパティを設定して、すべてが自動的に行われるようにする必要があります。

于 2013-03-19T03:00:41.000 に答える