如何从属性网格中删除描述区域?

时间:2015-04-26 22:15:29

标签: c# winforms propertygrid

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

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

enter image description here

2 个答案:

答案 0 :(得分:9)

尝试将PropertyGrid的{​​{1}}媒体资源设为HelpVisible

答案 1 :(得分:1)

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

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,从而有效地将其删除。如果你想要,你可以朝相反的方向前进,使其更大,以容纳更多的文字。