IM.*_*IM. 10 toolstrip winforms
我有一个状态栏的表单,其中有2 ToolStripStatusLabel秒后跟一个ToolStripProgressBar.我希望进度条始终锚定在状态栏的右侧 - 所以当窗口调整大小/最大化时,它应该自动移动 /重绘.
我认为这就像将1st(左对齐)ToolStripStatusLabel的Spring属性设置为true 一样简单,因此当窗体调整大小/增加大小,并且有更多可用空间时,1st ToolStripStatusLabel会填满该空间并自动推送ToolStripProgressBar在右边.
但这不仅没有做我想要的 - 第一个ToolStripStatusLabel实际上覆盖了第二个StatusLabel和ProgressBar基本占据整个状态栏.ToolStrip控件都没有Anchor甚至MinSize.
那我怎么做:
ToolStripProgressBarStatusBar的右侧(StatusStrip)ToolStripStatusLabel2和ToolStripProgressBar)混合在一起ToolStripStatusLabel1,如果有额外的空间,它会变大吗?在此先感谢您的时间和帮助!
〜IM
小智 14
有一个简单的解决方案.制作一个假的ToolStripStatusLabel,清空.Text并设置.Spring = true;
之后,添加ToolStripProgressBar.确保订单首先是标签,然后是进度条.
对于所有可能感兴趣的人.. 锚点属性是可用的,尽管仅在代码中(不在设计器中)...但无论如何,它不起作用.. 我在 Connect 中留下了一个 BUG 并得到了带有消息的通用 WillNotFix似乎表明他们只会考虑对其进行重大修改。
由于某种原因,“Spring”属性似乎不稳定。在我的极其简单的示例中,它正在工作,但在其他一些示例中,我做了一些自定义绘画(但在 MDIPArent 的子窗体中,后者具有 ht eStatusBar)它不是。在这些情况下,仍然有一个简单的解决方法 - 在 MDIParent 表单(具有状态栏)的 ReSize 事件中,更改 StatusLabel 的大小,使其以与宽度更改相同的比例变大,因此它会推动 ProgressBar到状态栏的右边缘
首先将 AutoSize 更改为 false
toolStripProgressBar.AutoSize = false;
然后订阅statusStrip的大小改变事件
statusStrip1.SizeChanged += statusStrip1_SizeChanged;
最后在事件处理程序中更改栏的宽度
private void statusStrip1_SizeChanged(object sender, EventArgs e)
{
toolStripProgressBar.Width = statusStrip1.Width - 95;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
10720 次 |
| 最近记录: |