在TopToolStripPanel上的第二行显示4个ToolStrip,像下面这样加入 m_ToolStripList.Add(Strip);
 Strip.Dock = DockStyle.None;
 this.toolStripContainer1.TopToolStripPanel.Join(Strip,1);
 this.toolStripContainer1.TopToolStripPanel.Update();这样显示是正确的,但是如果隐藏这些ToolStrip,然后再显示出来,他们的位置就错了,
不是挨着排列的,而是分割开一定距离,如果解决该问题?

解决方案 »

  1.   

    公布答案吧,很简单啊。
    加工具栏的时候获取一下Location保存到Tag, 如下面例子:
            /// <summary>
            /// 在Shell中添加ToolStrip
            /// </summary>
            /// <param name="Strip">工具栏</param>
            /// <returns>是否成功</returns>
            public override bool AddToolStrip(ToolStrip Strip)
            {
                m_ToolStripList.Add(Strip);
                Strip.Dock = DockStyle.None;
                this.toolStripContainer1.TopToolStripPanel.Join(Strip,1);
                this.toolStripContainer1.TopToolStripPanel.Update();
      Strip.Tag = Strip.Location;
                return true;
            }隐藏然后重新显示的时候,设回来:
            Strip.Visible = true;
            Strip.Location = (Point)Strip.Tag;
    隐藏的时候不用设,显示出来的时候,把Location设回去,如此位置就对了。问题虽小,解决方案虽简单,但看过很多帖子都没这个答案。