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

C# 如何从属性网格中删除描述区域?,c#,winforms,propertygrid,C#,Winforms,Propertygrid,Winforms有一个名为PropertyGrid的控件。PropertyGrid的显示元素是一个描述区域。默认情况下,它显示选定特性的名称。使用属性,程序员可以让它显示其他文本。 我想把它完全去掉。它占用了太多的空间,我不需要让它显示任何东西。我在对象模型中没有看到任何要删除它的属性。请发布删除它的解决方案 下面是我所说内容的屏幕截图。我想删除红色区域,以便“PercentComplete”位于框架底部 将以下内容添加到代码中: private static void ChangeDescri

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

下面是我所说内容的屏幕截图。我想删除红色区域,以便“PercentComplete”位于框架底部


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

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,从而有效地将其删除。如果您愿意,您可以反方向操作,使其更大以容纳更多文本。

尝试将
属性Grid
HelpVisible
属性设置为
false

如果任何人有一个不使用反射的解决方案,我“洗耳恭听”。谢谢,这就成功了。任何陷入这个问题的人都使用维桑的解决方案。如果要更改帮助窗口的高度,可以使用我的解决方案(使用反射)。