【问题标题】:How remove description area from property grid?如何从属性网格中删除描述区域?
【发布时间】:2015-04-26 22:15:29
【问题描述】:

Winforms 有一个标题为PropertyGrid 的控件。 PropertyGrid 的显示元素是描述区域。默认情况下,它显示所选属性的名称。使用属性,程序员可以让它显示其他文本。 我想完全删除它。它占用了太多空间,我不需要让它显示任何东西。我在对象模型中没有看到任何属性来删除它。请发布删除它的解决方案。

下面是我正在谈论的内容的屏幕截图。我想删除红色区域,使“PercentComplete”位于框架的底部。

【问题讨论】:

    标签: c# winforms propertygrid


    【解决方案1】:

    尝试将PropertyGridHelpVisible 属性设置为false

    【讨论】:

    • 谢谢你,成功了。任何遇到这个问题的人都会使用 vesan 的解决方案。如果您想更改帮助窗口的高度,可以使用我的解决方案(使用反射)。
    【解决方案2】:

    将以下内容添加到您的代码中:

    private static void ChangeDescriptionHeight(PropertyGrid grid, int height)
    {
        if (grid == null) throw new ArgumentNullException("grid");
    
        foreach (Control control in grid.Controls)
        {
            if (control.GetType().Name == "DocComment")
            {
                var fieldInfo = control.GetType().BaseType.GetField("userSized",
                                                                    BindingFlags.Instance |
                                                                    BindingFlags.NonPublic);
                fieldInfo.SetValue(control, true);
                control.Height = height;
                return;
            }
        }
    }
    

    然后这样称呼它:

        var progressTimerProperties = new ProgressTimerProperties();
        propertyGridProgressTimer.SelectedObject = progressTimerProperties;
    
        ChangeDescriptionHeight(propertyGridProgressTimer, 0);
    

    注意到“0”了吗?它将描述区域的高度设置为 0,从而有效地将其删除。如果你愿意,你可以往相反的方向走,把它变大以容纳更多的文字。

    【讨论】:

    • 如果有人有不使用反射的解决方案,我会“全力以赴”。
    猜你喜欢
    • 1970-01-01
    • 2016-08-04
    • 2011-07-21
    • 1970-01-01
    • 1970-01-01
    • 2017-06-08
    • 2012-10-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多