You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在C#/Visual Studio中向ToolStrip添加Panel的显示问题

解决ToolStripControlHost加载Panel不显示的问题

针对你遇到的问题,核心原因是Panel控件的默认特性与ToolStripControlHost的适配冲突,可按以下步骤处理:

  • 强制设置控件尺寸:Panel默认无固定大小,且ToolStripControlHost不会自动继承工具栏高度,需显式设置两者的宽高:

    Panel prpPanel = new Panel();
    // 预留2px避免超出工具栏边界
    prpPanel.Size = new Size(60, toolStrip1.Height - 2);
    ToolStripControlHost host = new ToolStripControlHost(prpPanel);
    host.Size = prpPanel.Size;
    toolStrip1.Items.Add(host);
    
  • 区分背景色:Panel默认背景色可能与ToolStrip一致,导致视觉上不可见,给Panel设置差异化背景色:

    prpPanel.BackColor = Color.LightCyan;
    
  • 添加自定义绘制逻辑:若需要自定义内容,给Panel绑定Paint事件实现绘制:

    prpPanel.Paint += (s, e) => {
        e.Graphics.DrawRectangle(Pens.Red, 0, 0, prpPanel.Width-1, prpPanel.Height-1);
        e.Graphics.DrawString("自定义内容", Font, Brushes.Black, 5, 5);
    };
    
  • 更优替代方案:如果本质是需要自定义绘制的工具栏项,建议直接继承ToolStripItem并重写OnPaint方法,适配ToolStrip渲染体系:

    public class CustomToolStripItem : ToolStripItem
    {
        protected override void OnPaint(PaintEventArgs e)
        {
            base.OnPaint(e);
            e.Graphics.FillRectangle(Brushes.LightGreen, this.ContentRectangle);
            e.Graphics.DrawString("自定义项", this.Font, Brushes.Black, 2, 2);
        }
    }
    // 使用时直接添加
    toolStrip1.Items.Add(new CustomToolStripItem());
    

内容的提问来源于stack exchange,提问作者George Keeling

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.15 01:52:04