2009-06-02 48 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。 這是一個開源項目,所以你可以根據需要修改代碼。

但是,如果您可以使用選項卡,該套件具有許多功能。

相關問題