none
关于toolstripcontainer控件的使用 RRS feed

  • 问题

  • toolstripcontainer控件,请问这个控件怎麽,当我在程序运行的时候动态增加了一个toolstrip的时候,怎麽增大toolstripcontainer的宽度,好像word2003那样,当增加一个工具栏的时候可以工具栏调整每个工具栏的位置
    2011年9月4日 13:43

答案

  • Hi 华仔,

    这里我给你写了一个Sample, 其中toolStripContainer1的宽度是随着其中toolStrip1的项变化的,你可以添加一些项或者改变一下现有项的内容来测试一下:

        public partial class Form1 : Form
        {
            private ToolStripContainer toolStripContainer1;
            private ToolStrip toolStrip1;
    
            public Form1()
            {
                InitializeComponent();
    
                this.Load += new EventHandler(Form1_Load);

    toolStripContainer1 = new System.Windows.Forms.ToolStripContainer(); toolStripContainer1.Size = new System.Drawing.Size(15, 50); toolStrip1 = new System.Windows.Forms.ToolStrip(); toolStrip1.Items.Add("One"); toolStrip1.Items.Add("Two"); toolStrip1.Items.Add("Three"); toolStrip1.Items.Add("Four"); toolStrip1.Items.Add("Five"); toolStrip1.Items.Add("Six"); toolStripContainer1.TopToolStripPanel.Controls.Add(toolStrip1); Controls.Add(toolStripContainer1); } private void Form1_Load(object sender, EventArgs e) { int appendedWidth = 0; Graphics graphics = CreateGraphics(); SizeF sizeF; foreach (ToolStripItem item in toolStrip1.Items) { sizeF = graphics.MeasureString(item.Text, item.Font); item.Width = Convert.ToInt32(sizeF.Width); appendedWidth += item.Width; } toolStripContainer1.Width += appendedWidth; } }

    只需要将这些代码copy到窗体的CS文件中即可运行.

    不过这里不清楚你为什么要设计成这样, 因为ToolStripContainer的宽度一般是固定的, 当菜单项总宽度超过其宽度时会自动出现下拉菜单来显示其余的项, 所以你的需求我看来是不必要的, 而且这样做的话如果项太多的话ToolStripContainer会延展到窗体外面或者与右边的其它控件重叠.

    祝你快乐每一天,

     


    Leo Liu [MSFT]
    MSDN Community Support | Feedback to us
    Get or Request Code Sample from Microsoft
    Please remember to mark the replies as answers if they help and unmark them if they provide no help.

    2011年9月6日 8:38
    版主

全部回复

  • Hi 华仔,

    这里我给你写了一个Sample, 其中toolStripContainer1的宽度是随着其中toolStrip1的项变化的,你可以添加一些项或者改变一下现有项的内容来测试一下:

        public partial class Form1 : Form
        {
            private ToolStripContainer toolStripContainer1;
            private ToolStrip toolStrip1;
    
            public Form1()
            {
                InitializeComponent();
    
                this.Load += new EventHandler(Form1_Load);

    toolStripContainer1 = new System.Windows.Forms.ToolStripContainer(); toolStripContainer1.Size = new System.Drawing.Size(15, 50); toolStrip1 = new System.Windows.Forms.ToolStrip(); toolStrip1.Items.Add("One"); toolStrip1.Items.Add("Two"); toolStrip1.Items.Add("Three"); toolStrip1.Items.Add("Four"); toolStrip1.Items.Add("Five"); toolStrip1.Items.Add("Six"); toolStripContainer1.TopToolStripPanel.Controls.Add(toolStrip1); Controls.Add(toolStripContainer1); } private void Form1_Load(object sender, EventArgs e) { int appendedWidth = 0; Graphics graphics = CreateGraphics(); SizeF sizeF; foreach (ToolStripItem item in toolStrip1.Items) { sizeF = graphics.MeasureString(item.Text, item.Font); item.Width = Convert.ToInt32(sizeF.Width); appendedWidth += item.Width; } toolStripContainer1.Width += appendedWidth; } }

    只需要将这些代码copy到窗体的CS文件中即可运行.

    不过这里不清楚你为什么要设计成这样, 因为ToolStripContainer的宽度一般是固定的, 当菜单项总宽度超过其宽度时会自动出现下拉菜单来显示其余的项, 所以你的需求我看来是不必要的, 而且这样做的话如果项太多的话ToolStripContainer会延展到窗体外面或者与右边的其它控件重叠.

    祝你快乐每一天,

     


    Leo Liu [MSFT]
    MSDN Community Support | Feedback to us
    Get or Request Code Sample from Microsoft
    Please remember to mark the replies as answers if they help and unmark them if they provide no help.

    2011年9月6日 8:38
    版主
  • 不好意思 leoliu,这句话我写错了,好像word2003那样,当增加一个工具栏的时候工具栏容器控件能够自动增大自己的空间
    2011年9月12日 8:41
  • 呃...忘了word2003是什么样了, 好久, 好久, 好久 都没用了.
    你的意思是不是像VS的工具栏一样,添加一条工具栏,如果一行放不下了就会把最后一个工具栏放到第二行,这样整个工具栏就由原来的N行变成N+1行?
    在ToolStripContainer中,如果增加的toolstrip在当前行放不下了,就移到下一行,是不是?


    Leo Liu [MSFT]
    MSDN Community Support | Feedback to us
    Get or Request Code Sample from Microsoft
    Please remember to mark the replies as answers if they help and unmark them if they provide no help.

    2011年9月12日 8:58
    版主