C# 如何从属性网格中删除描述区域?
Winforms有一个名为C# 如何从属性网格中删除描述区域?,c#,winforms,propertygrid,C#,Winforms,Propertygrid,Winforms有一个名为PropertyGrid的控件。PropertyGrid的显示元素是一个描述区域。默认情况下,它显示选定特性的名称。使用属性,程序员可以让它显示其他文本。 我想把它完全去掉。它占用了太多的空间,我不需要让它显示任何东西。我在对象模型中没有看到任何要删除它的属性。请发布删除它的解决方案 下面是我所说内容的屏幕截图。我想删除红色区域,以便“PercentComplete”位于框架底部 将以下内容添加到代码中: private static void ChangeDescri
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
如果任何人有一个不使用反射的解决方案,我“洗耳恭听”。谢谢,这就成功了。任何陷入这个问题的人都使用维桑的解决方案。如果要更改帮助窗口的高度,可以使用我的解决方案(使用反射)。