1

表示されているオブジェクトに応じて、さまざまなデータをユーザーに提示するアプリケーションに取り組んでいます。オブジェクトはすべて同じインターフェースであり、一度区別された以上の拡張プロパティがあります。

タイプに依存するコントロールをユーザーに表示するための「最良の」方法を探しています。タブを使用したいのですが、.NET 2.0に固執しており、タブを非表示/表示する唯一の方法は、タブを削除して再度追加することです。これが最善の方法かもしれませんが、GUIコンポーネントの点滅、リロード時にタブをアクティブなタブに保持するなどの問題が発生します。

それぞれにカスタムコントロールを作成し、それらをすべてロードして、必要に応じて非表示/表示するか(過去にプロジェクトで行ったことがある)、それらを破棄して再インスタンス化することができます...

最も明確にするために、私はコードの優雅さとプログラムの効率の間の最も近いバランスを言うでしょう。

4

3 に答える 3

0

私はそれらをすべてロードし、必要なものを表示/非表示にすることで最高の幸運を手に入れました。

すべてを破棄して再インスタンス化すると、常に物事が非常に厄介になります。

ロード時間がひどくならないようにするために、最初の使用時にそれらをインスタンス化することができます。何かのようなもの:

IView LoadView(Type dependantType)
{
  // get the view or create one
  IView view = GetView(dependantType);
  if (view == null)
  {
    view = InstantiateViewAndAddToForm(dependantType);
    AddView(view);
  }

  //
  // do some binding to your model or whatever here
  //

  // make the correct view visible
  foreach (IView v in Views)
    view.Visible = v == view;
}
于 2009-06-02T19:43:49.383 に答える
0

オブジェクトごとにパネルを作成し、辞書でオブジェクトタイプとパネルを関連付けることができますか?

パネルがすべて同じサイズの場合は前面に移動するように指示するか、すべてのPanels.Visibleをfalseに設定し、必要なものをtrueに設定するだけです。

于 2009-06-02T19:44:44.483 に答える
0

複数のタブを必要とするアプリケーションにDockPanelSuiteを使用しました。これはオープンソースプロジェクトであるため、必要に応じて実際にコードを変更できます。

スイートには多くの機能がありますが、タブだけを使用できる場合は。

于 2009-06-02T19:47:01.437 に答える