处理多个视图/制表符GUI元素的最佳方法是什么

时间:2009-06-02 19:38:43

标签: c# user-interface user-controls tabcontrol

我正在开发一个应用程序,根据所查看的对象向用户显示各种数据。这些对象都具有相同的接口,只有扩展属性才能超越一次。

我正在寻找向用户显示类型相关控件的“最佳”方式。我想使用选项卡,但我坚持使用.NET 2.0,从我可以收集的内容中隐藏/显示选项卡的唯一方法是删除它们并重新添加它们。这可能是最好的方法,但这会导致有关GUI组件闪烁的问题,在重新加载时保持活动选项卡的标签等。

我可以为每个人制作自定义控件,并将它们全部加载并在必要时隐藏/显示(我过去在项目中做过),或者处理并重新实例化它们......

为了澄清最好,我会说代码优雅和程序效率之间最接近的平衡。

3 个答案:

答案 0 :(得分: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;
}

答案 1 :(得分:0)

您是否可以为每个对象创建一个面板,并让字典关联对象类型和面板?

如果它们的大小相同,你可以告诉小组将它们带到前面,或者将所有Panels.Visible设置为false,然后设置你需要的那个。

答案 2 :(得分:0)

我已将DockPanel Suite用于需要多个标签的应用程序。 它是一个开源项目,因此您可以根据需要实际修改代码。

如果你可以使用标签,套件有很多功能。