2009-06-02 54 views
1

我正在研究一个应用程序,该应用程序根据查看的对象向用户提供各种数据。这些对象都是相同的接口,只是扩展属性超出了一次区分。什么是处理多重视图/ tab-ish GUI元素的最佳方法

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

我可以为每个控件制作自定义控件,并让它们全部加载并隐藏/显示在必要的时候(我已经在项目中完成了这项工作),或者处理并重新实例化它们......

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

回答

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; 
} 
0

你能不能为每个对象面板,并有一本字典的对象类型和面板联系起来?

您可以告诉面板如果尺寸完全相同,或者将所有Panels.Visible设置为false,并且只需将其设置为true即可。

0

对于需要多个选项卡的应用程序,我已经使用DockPanel Suite。 这是一个开源项目,所以你可以根据需要修改代码。

但是,如果您可以使用选项卡,该套件具有许多功能。

相关问题