需求
將 ListBox、ComboBox 等控件直接放置在 ToolBar 控件頂部,實現類似 Office 頂部工具欄的複合控件佈局。
原生 ToolBar 限制
- VB6 原生
ToolBar (MSComctlLib) 僅支持按鈕、分隔符、下拉按鈕,不支持直接承載其他 ActiveX 控件;
- 嘗試
SetParent 強行重定父窗口會導致繪製錯亂、焦點異常、Tab 順序錯亂。
解決方案:ActiveBar (BCGControlBar VB 版)
- 專業級 Ribbon/ToolBar 庫,原生支持在 ToolBar 面板上嵌入 任意 ActiveX 控件 (ComboBox、DateTimePicker、ColorPicker、自定義 UserControl);
- 完美模仿 Office 2003/2007/2010 風格,支持主題切換、高 DPI、鍵盤導航;
- 下載地址:CSDN 下載 (含示例工程)。
快速上手步驟
- 註冊
ActiveBar.ocx (管理員運行 regsvr32 ActiveBar.ocx);
- VB6 「項目 → 組件」勾選 ActiveBar Control;
- 工具箱出現
ActiveBar 控件,拖放到窗體;
- 右鍵控件 → Properties → Bands 添加 Band → Controls 添加 ComboBox/ListBox 等;
- 屬性頁中綁定事件、設置樣式即可。
替代方案(不引入第三方)
- CoolBar (Microsoft Windows Common Controls 6.0):支持
Band 容器,可放入任意控件,但樣式老舊、高 DPI 支持差;
- 自繪 UserControl:組合 PictureBox + ComboBox 模擬 ToolBar 外觀,工作量大但零依賴。
總結
VB6 原生 ToolBar 無法嵌入 ListBox/ComboBox。商業項目強烈建議購買/使用 ActiveBar 獲得專業級體驗;學習/簡易項目可用 CoolBar 或自繪方案權衡。