首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> .NET 網頁程式設計 >> C# >> 關於C#

WinForms 仿 QQ 面板側邊欄:Dock 布局與動態切換實現

     編輯:關於C#

無需第三方控件,純 WinForms 實現類似 QQ 側邊欄的摺疊面板效果。核心在於巧妙運用 Dock、BringToFront/SendToBack 控制控件層級與佔位。

控件組成

  • Button × 3:分別代表「我的好友」「我的同事」「我的陌生人」分組標題。
  • ListView:顯示當前分組下的好友列表,配合 ImageList 顯示頭像。
  • ImageList:存儲好友頭像圖標資源。

動態切換邏輯

點擊分組按鈕時,重新設定所有按鈕與 ListView 的 Dock 屬性與 Z 軸順序,實現「標題固定、列表填充剩餘區域」的自適應佈局。

private void btnMyFriend_Click(object sender, EventArgs e)
{
    listView.Dock = DockStyle.None;
    btnMyFriend.Dock = DockStyle.Top;
    btnMyColleague.Dock = DockStyle.Bottom;
    btnMyStranger.SendToBack();
    btnMyStranger.Dock = DockStyle.Bottom;
    listView.BringToFront();
    listView.Dock = DockStyle.Bottom;

    // 重新綁定數據
    listView.Clear();
    listView.Items.Add("老婆", "老婆", 5);
    listView.Items.Add("小蜜", "小蜜", 1);
    // ... 更多項目
}

關鍵技巧總結

  1. Dock 而非 Location:利用 DockStyle.Top/Bottom 實現自動佈局,隨父容器縮放自適應。
  2. Z-Order 控制:BringToFront() 讓 ListView 覆蓋按鈕;SendToBack() 讓非活躍分組按鈕沉底。
  3. 動態數據綁定:切換分組時 Clear() 後重新 Add() 項目,配合 LargeImageList 顯示圖標。

運行效果

好友分組 同事分組 陌生人分組

源碼下載

完整可編譯執行源碼:CSDN 下載鏈接

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