Почему некоторые свойства элемента управления отображаются в конструкторе Visual Studio, а другие нет? - PullRequest
2 голосов
/ 25 января 2011

Возьмите мой навигационный элемент управления пользователя:

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 ]

3 голосов
/ 25 января 2011

Свойство 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 голос
/ 25 января 2011

Необходимо пометить свойства, которые вы хотите видеть в списке свойств времени разработки, с помощью BrowsableAttribute .

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

Предположительно, свойство IsSelected было унаследовано, и ему был задан этот атрибут. Я, вероятно, выключен, потому что я думаю, что компилятор предупредит вас, что в этом случае вы скрываете унаследованное свойство.

...