0

VB.NET / Win フォーム / VS 2008

私はいくつかのソフトウェアに取り組んでおり、これまでのところUIデザインに非常に満足しています..非常に構造化されていて読みやすい..しかし、ウィンドウのサイズを変更すると、非常に「遅れる」. タスク マネージャーを見ると、ウィンドウのサイズを変更すると (サイズ変更されていない場合は 0%)、CPU が 25% (コアの 100% を使用) に急上昇します。もしそうなら、毎秒4フレームのような速度でウィンドウを再描画しています。

かなり複雑な UI ですが、決しておかしなことはありません。このまま走ってはいけないと思います。

私のレイアウト階層は次のようになります。

<FORM>
    <TABCONTROL> (first tab example, subsequent tabs follow the same control hierarchy)
        <SPLITCONTAINER>
            <PANEL 1>
                <DATAGRIDVIEW />
            </PANEL 1>
            <PANEL 2>
                <TABCONTROL>
                    <TABCONTROL>
                        <TABCONTROL>
                            Lots of data fields in these tabs
                        </TABCONTROL>
                    </TABCONTROL>
                </TABCONTROL>
            </PANEL 2>
        </SPLITCONTAINER>
    </TABCONTROL>
</FORM>

すべてがその親にドッキングされます。それはすべて非常に流動的です。そのため、スプリッターはメインのタブにドッキング (塗りつぶしモード) され、タブコントロールは他のタブコントロール内にドッキング (塗りつぶしモード) されます。

ウィンドウのサイズが変更されたときにコントロールの位置を再計算しようとすると、システムに大きな負荷がかかるだけだと思います。

ソフトウェアを完全に再設計する以外に、これについて何ができるかについての提案はありますか?

4

1 に答える 1

1

残念ながら、これはWinFormsアプリ、特にネストされたコンテナーがたくさんあるアプリでは正常です。

ただし、フォームのサイズが変更されようとしているとき、およびサイズが変更された後に、Suspend andResumeLayoutを呼び出すことを含む「回避策」があります。

C#ウィンドウフォームのサイズを変更するときにウィンドウが再描画されないようにする

于 2013-01-15T20:10:37.553 に答える