首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么SizingGrip of StatusStrip没有出现?

为什么SizingGrip of StatusStrip没有出现?
EN

Stack Overflow用户
提问于 2013-08-01 11:49:34
回答 1查看 907关注 0票数 1

我想向一个StatusStrip添加一个UserControl,并在运行时调整这个UserControl的大小。下面是我如何添加StatusStrip

代码语言:javascript
复制
  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 (小三角形)。为什么不行?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-08-01 12:05:14

它不会出现,因为UserControl在运行时不是一个很大的控件。StatusStrip,更确切地说是大小控制,是为了支持Form控件而构建的。

下面是ShowSizingGrip的代码,它是在绘制过程中使用的private属性:

代码语言:javascript
复制
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上。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17993251

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档