为什么Visual Studio设计器中显示某些控件属性,而其他控件属性不显示?

时间:2011-01-24 23:58:19

标签: c# visual-studio designer propertyeditor

使用我的navigationItem usercontrol:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using Uboldi.Helpers;

namespace Uboldi
{
    public partial class NavigationItem : UserControl
    {
        public bool IsSelected { get; set; }
        public string Text { get; set; }

        public NavigationItem()
        {
            InitializeComponent();
            RefreshDisplay();
        }

        private void RefreshDisplay()
        {
            if (IsSelected)
                this.BackColor = CustomizationHelper.GetSecondaryColor();
            else
                this.BackColor = CustomizationHelper.GetPrimaryColor();            
        }
    }
}

在Visual Studio中,我可以看到IsSelected属性,但不能看到Text属性。 enter image description here

有什么理由?

2 个答案:

答案 0 :(得分:3)

Text属性继承自UserControl。在隐藏的地方,用户控件没有显示文本的有意义的方式。您必须再次继承它并关闭所有属性以使其隐藏。像这样:

    [Browsable(true)]
    [EditorBrowsable(EditorBrowsableState.Always)]
    [DesignerSerializationVisibility(DesignerSerializationVisibility.Content)]
    [Bindable(true)]
    public override string Text {
        get { return base.Text; }
        set { base.Text = value; }
    }

答案 1 :(得分:1)

您需要使用BrowsableAttribute在设计时属性列表中标记要显示的属性。

[Browsable(true)]
public bool Text { get; set; } 

猜测,继承了IsSelected属性,并设置了此属性。我可能已经关闭了,因为我觉得如果是这种情况,编译器会警告你正在隐藏一个继承的属性。