簡體   English   中英

如何使用列表視圖或樹形視圖控制標簽頁

[英]How to control tabpage using listview or tree view

在許多程序中,例如PuTTY,uBittorrent,notepad ++和WinSCP,它們使用某種列表視圖或樹視圖來組織首選項表單,如下圖所示: 在此處輸入圖片說明 在此處輸入圖片說明 因此,我想問的是:在C#中,是否有任何本機方式可以在此布局中組織Winform控件? 我發現的是,當用戶單擊左側的列表視圖項時,將右側控件手動加載到面板中。 但是,還有C#直接支持的更好的解決方案嗎?

謝謝〜

有許多方法可以實現。 首先要獲得布局,我將使用表格布局面板作為表單中最頂層的控件並將其設置為2列。 左列將是列表視圖,右列將顯示具有當前所選列表視圖項的關聯頁面。

我會為每個可能的列表視圖項創建一個簡單的模型,例如

public class PageViewItemModel()
{
    public string ItemDescription { get; }

    public UserControl CustomUserControlForViewItem { get; }

    public PageViewItemModel()
    {
        // Initialize the associated custom user control here
        CustomUserControlForViewItem = new YourCustomUserControlClass();

        // Set the display name for the list view
        ItemDescription = MyListViewItemName;
    }
}

當然,您可以創建一個通用類並使用構造函數參數來完成所有這些操作,而不是為列表視圖中的每個可能的項目創建一個模型。 但是,在擁有ListViewItemModel對象之后,可以將它們添加到列表視圖中,並將DisplayName屬性設置為“ ItemDescription”,以便它在ListView中顯示該值。

然后在父窗體中創建一個事件處理程序,該事件處理程序處理ListView的SelectedIndexChanged事件,該事件將關聯的自定義用戶控件添加到TableLayOutPanel的右列

public void OnSelectedIndexChanged(object sender, EventArgs e)
{
    int selectedIndex = myListView.SelectedIndex;

    PageViewItemModel model = myListView.Items[selectedIndex];

    myTableLayOutPanel.Controls.Add(model, 0, 1);
}

這就是要旨。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM