首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

C# Sidebar 控件使用指南:動態載入多個好友列表項目

     編輯:程式設計綜合問答

在 C# WinForms 專案(如模仿 QQ 主介面)中使用 Sidebar 控件顯示好友分組列表,需動態新增多個面板項目。本文說明控件基本用法與迴圈動態載入實作。

Sidebar 控件簡介

Sidebar(常見於第三方庫如 DevComponents.DotNetBar.Sidebar 或自訂 UserControl)用於垂直堆疊可摺疊面板,適合做導航欄、好友分組等。

靜態設計時期加入面板

  1. 工具箱拖放 Sidebar 至表單。
  2. 點擊 Sidebar 智慧標籤 → Add Panel 新增面板。
  3. 設定各面板 Text(標題)、Image(圖示)。
  4. 在面板內拖放 ListView、TreeView 或自訂控件顯示好友列表。

執行期動態新增面板(核心需求)

若好友分組資料來自資料庫,需迴圈動態建立:

using DevComponents.DotNetBar;  // 確認引用正確命名空間

private void LoadFriendGroups() {
    // 假設從資料庫取得分組清單
    var groups = GetGroupsFromDB();  // List { Id, Name, Icon }

    sidebar1.Panels.Clear();  // 清除設計時期面板

    foreach (var g in groups) {
        // 1. 建立面板
        SidebarPanel panel = new SidebarPanel();
        panel.Text = g.Name;
        panel.Name = "panel_" + g.Id;
        if (g.Icon != null) panel.Image = g.Icon;

        // 2. 建立承載好友列表的控件(例:ListView)
        ListView lv = new ListView();
        lv.Dock = DockStyle.Fill;
        lv.View = View.LargeIcon;
        lv.LargeImageList = imageListFriends;
        // 綁定該分群好友資料
        BindFriendsToListView(lv, g.Id);

        // 3. 將 ListView 加入面板
        panel.Controls.Add(lv);

        // 4. 將面板加入 Sidebar
        sidebar1.Panels.Add(panel);
    }
}

常見問題排查

現象原因解決
面板加入後不顯示未設定 Dock = Fill 或面板 Visible = false子控件 Dock=Fill,面板 Visible=true
好友列表為空資料綁定邏輯錯誤、ImageList 未指派檢查 BindFriendsToListView 參數與 SQL
摺疊/展開無反應事件未綁定、Sidebar 版本不相容確認引用 DLL 版本、重新註冊控件

迴圈寫法提示

提問者提到「據說要使用循環什麼的」,foreach 是最直觀的集合遍歷方式;若為索引存取,for (int i=0; i<count; i++) 同樣適用。關鍵在於每次迴圈 new 新物件,避免重複加入同一控件實例。

替代方案

  • FlowLayoutPanel + 自訂摺疊 UserControl:無第三方依賴,彈性更高。
  • TreeView 獨立模式:原生控件,支援節點摺疊,樣式可透過 OwnerDraw 自訂。

掌握動態載入模式,即可根據後端資料靈活構建類 QQ 主介面側邊欄。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved