在 C# windows 窗体属性网格中,您可以提供类别本身的描述吗?

Posted

技术标签:

【中文标题】在 C# windows 窗体属性网格中,您可以提供类别本身的描述吗?【英文标题】:in a C# windows forms property grid, can you provide descriptions for the categories themselves? 【发布时间】:2021-12-26 09:59:19 【问题描述】:

在属性网格中,当您选择一个项目时,它会在底部的框中​​显示 [description("")] 帮助文本。

当您使用属性网格的分类视图时,您还可以选择自己选择类别名称

我的问题是,有没有办法为所选类别提供描述,以与属性的描述标签显示相同的方式显示?例如。当您选择输入时,您可能会看到

Input
Items in this category are related to Input

另外,如果它是相关的,我只是使用一个标准的属性网格,该网格由一个包含用描述和类别标记的属性的类填充

public class Foo

    [Category("Foo Category")]
    [Description("Foo Description help text")]
    public string fooProperty  get; set;  = "";

【问题讨论】:

我知道您使用的是 MS PropertyGrid,但以防万一:WinForms 的第 3 方组件 Smart PropertyGrid 允许您设置类别描述。免责声明:我是这个组件的作者。 【参考方案1】:

属性网格是“开源的”。

这个描述文字是由这个https://referencesource.microsoft.com/#system.windows.forms/winforms/Managed/System/WinForms/PropertyGridInternal/PropertyGridView.cs,4496设置的

this.ownerGrid.SetStatusBox(gridEntry.PropertyLabel,gridEntry.PropertyDescription);

gridEntry 的类别由CategoryGridEntry 类https://referencesource.microsoft.com/#system.windows.forms/winforms/Managed/System/WinForms/PropertyGridInternal/CategoryGridEntry.cs 处理,该类派生自GridEntry 类,该类在此处定义PropertyDescription 属性https://referencesource.microsoft.com/#system.windows.forms/winforms/Managed/System/WinForms/PropertyGridInternal/GridEntry.cs,909:

  public virtual string PropertyDescription 
            get 
                return null;
            
        

这个属性在CategoryGridEntry 中没有被覆盖,所有这些都是内部代码,所以,不,你不能有类别网格条目的描述。

【讨论】:

以上是关于在 C# windows 窗体属性网格中,您可以提供类别本身的描述吗?的主要内容,如果未能解决你的问题,请参考以下文章

C# WinForm窗体设计器怎么显示网格

C#窗体中嵌入excel的模板

从 c# windows 应用程序中的按钮单击将值返回到网格

C# winfrom 窗体的StartPosition 属性

当属性更改值时,在 C# Windows 窗体中定义事件[重复]

在 C# 中将 Windows 窗体属性绑定到 ApplicationSettings 的最佳方法?