我想向一个StatusStrip添加一个UserControl,并在运行时调整这个UserControl的大小。下面是我如何添加StatusStrip。
StatusStrip sb = new StatusStrip();
sb.BackColor = System.Drawing.SystemColors.ControlDark;
sb.Dock = DockStyle.Bottom;
sb.GripMargin = new Padding(2);
sb.SizingGrip = true;
sb.GripStyle = ToolStripGripStyle.Visible;
sb.LayoutStyle = ToolStripLayoutStyle.HorizontalStackWithOverflow;
this.Controls.Add(sb);StatusStrip显示在UserControl的底部。然而,在SizingGrip的右下角没有StatusStrip (小三角形)。为什么不行?
发布于 2013-08-01 12:05:14
它不会出现,因为UserControl在运行时不是一个很大的控件。StatusStrip,更确切地说是大小控制,是为了支持Form控件而构建的。
下面是ShowSizingGrip的代码,它是在绘制过程中使用的private属性:
private bool ShowSizingGrip
{
get
{
if (this.SizingGrip && base.IsHandleCreated)
{
if (base.DesignMode)
{
return true;
}
HandleRef rootHWnd = WindowsFormsUtils.GetRootHWnd(this);
if (rootHWnd.Handle != IntPtr.Zero)
{
return !UnsafeNativeMethods.IsZoomed(rootHWnd);
}
}
return false;
}
}在这一点上,我可以看到两个兴趣点。首先,HandleRef rootHWnd = WindowsFormsUtils.GetRootHWnd(this);,我不能测试这个类,因为它是internal,但是很有可能它不会返回一个窗口。然而,即使它做到了,如果说窗口目前是最大化的,!UnsafeNativeMethods.IsZoomed(rootHWnd);,大小抓地力也不会显示。
我受过教育的猜测--你的窗户被最大化了。我做出这个假设是因为科迪·格雷( Cody )似乎能够让它出现在一个UserControl上。
https://stackoverflow.com/questions/17993251
复制相似问题