C# C/winforms。StatusStrip中的嵌入式轨迹栏

C# C/winforms。StatusStrip中的嵌入式轨迹栏,c#,winforms,trackbar,statusstrip,C#,Winforms,Trackbar,Statusstrip,由于无法告诉我使用forms designer将轨迹栏添加到状态条中,因此我向form load方法添加了以下代码: zoomTrackBar = new TrackBar(); ToolStripControlHost myControlHost = new ToolStripControlHost(zoomTrackBar); mainStatus.Items.Add(myControlHost); zoomTrackBar.M

由于无法告诉我使用forms designer将轨迹栏添加到状态条中,因此我向form load方法添加了以下代码:

        zoomTrackBar = new TrackBar();
        ToolStripControlHost myControlHost = new ToolStripControlHost(zoomTrackBar);
        mainStatus.Items.Add(myControlHost);
        zoomTrackBar.Minimum = 0;
        zoomTrackBar.Maximum = 100;
        myControlHost.Height = statusLabel.Height; // statusLabel is a label already in the statusstrip... I'd like to match its height but not working
有些东西工作不正常。首先,轨迹栏甚至不会出现,直到我要么最大化窗口,要么反复随机调整窗口大小。显示后,无论窗口状态如何,它都会保留在那里

在添加轨迹栏之前,状态栏中已有三项。第一项是自动调整大小的标签,它会跳转到第二个和第三个固定宽度标签,因此较小的固定宽度标签始终位于x坐标和y坐标的右侧

创建的轨迹栏是巨大的。更改控制主机或轨迹栏本身的高度不会更改轨迹栏的高度。这使得整个状态条变得巨大

我甚至愿意添加一个按钮,生成一个临时的垂直轨迹栏,如果这更容易的话


在mainStatus上调用Invalidate没有帮助。

我不知道为什么,但下面的代码行修复了所有问题,包括大小。。。主干立根0,0,0;我意识到这会强制进行布局更新,但我不明白为什么在加载表单之前没有执行布局更新。请澄清:我刚刚从表单设计器向StatusStrip添加了一个轨迹栏,没有任何问题。。。而且它似乎工作得很好。。。我使用VB,但我希望这不是问题所在…TrackBar不是从表单设计器添加到StatusStrip的选项。。。或者我只是没有看到它。我不知道你要用它做什么,但是如果你只是从工具箱中得到一个轨迹栏,然后把它放在状态条中,它就工作了。诚然,它不是StatusStrip本身的一个选项,但谁在乎它是否适合您的需要呢;