将DisplayName和Description分配给用户控件属性

时间:2019-01-04 17:57:49

标签: c# visual-studio

我的用户控件属性(而不是类别)的DisplayName和Description属性被忽略。
this几乎相同的问题,除了在我的情况下,建议的答案不起作用。

我的代码:

[DisplayName("Custom String"),
  Category("Custom Properties"),
  Description("String to display.")]
public string CustomString
{
    get { return customString; }
    set { customString = value; }
}
private string customString;

Properties window, showing that only the Category Attribute is working.

EDIT2 --------------------

不同的Webforms项目,使用相同的代码(不同的值)从头开始创建新的用户控件。 Same results as before, only Category is applied.

public partial class AttributedUserControl : System.Web.UI.UserControl
{
    [DisplayName("New Control Text"),
    Category("New control Properties"),
    Description("Text to show inside the user control.")]
    public string TextString
    {
        get { return _TextString; }
        set { _TextString = value; }
    }
    private string _TextString;
    protected void Page_Load(object sender, EventArgs e)
    {

    }
}

  • Visual Studio Professional 2015-版本14.0.25431.01更新3
  • .NET Framework 4.7.03056

1 个答案:

答案 0 :(得分:0)

您发现了一个错误。我使用Visual Studio 2017创建了服务器控件和用户控件,并发现System.ComponentModel.DescriptionAttribiute(即[Description("My Description")])不起作用。我还发现System.ComponentModel.DisplayName(即[DisplayName("My Description")])不起作用。当我说“不起作用”时,我的意思是属性网格不会像应有的那样在属性网格窗口的底部显示描述。无论您将什么设置为Description属性,只有属性名称字符串本身都会出现在属性网格的描述区域中。

我建议将此问题发布到Microsoft。这非常令人沮丧,但是您没有做错任何事情。我在编写Winforms控件和设计器方面拥有丰富的经验,并且这些属性在Winforms空间中起作用。

FWIW,其他属性,例如[DefaultValue("Test")],也可以正常工作。

我希望我能报道更好的消息。如果您有资格这样做,则可以接受此答案,也可以尝试就此问题悬赏。否则,我邀请任何其他专家参加会议。