为什么StatusStrip的SizingGrip没有显示
本文关键字:显示 SizingGrip StatusStrip 为什么 | 更新日期: 2023-09-27 18:25:44
我想在UserControl
中添加一个StatusStrip
,并在运行时调整该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
的底部。但是在StatusStrip
的右下角没有SizingGrip
(小三角形)。为什么不呢?
它没有显示,因为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 Gray似乎能够让它出现在UserControl
上。