無需第三方控件,純 WinForms 實現類似 QQ 側邊欄的摺疊面板效果。核心在於巧妙運用 Dock、BringToFront/SendToBack 控制控件層級與佔位。
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);
// ... 更多項目
}
DockStyle.Top/Bottom 實現自動佈局,隨父容器縮放自適應。BringToFront() 讓 ListView 覆蓋按鈕;SendToBack() 讓非活躍分組按鈕沉底。Clear() 後重新 Add() 項目,配合 LargeImageList 顯示圖標。

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