Скрытие элементов и категорий для пользовательских элементов управления - PullRequest
0 голосов
/ 19 января 2011

У меня есть вопрос, пожалуйста.Можно ли скрыть некоторые элементы и категории базового элемента управления (для пользовательского элемента управления).Я хочу, чтобы отображались только те свойства, которые я определил.Спасибо за ваше время.

Ответы [ 2 ]

1 голос
/ 19 января 2011

Смажьте свойства и добавьте [Browsable(false)].

Например:

[Browsable(false)]
public new SomeType SomeProperty {
    get { return base.SomeProperty; }
    set { base.SomeProperty = value; }
}
0 голосов
/ 19 января 2011

Вы можете использовать пользовательский атрибут [Browsable(false)], чтобы свойство не появлялось в редакторе свойств WinForms:

[Browsable(false)]
public new PropertyType PropertyName
{
    get { return base.PropertyName; }
    set { base.PropertyName = value; }
}

Однако это заставит свойство все еще работать, оно просто не появится вдизайнер форм.Компилятор с радостью примет это.Если вы хотите, чтобы свойство фактически перестало работать, выведите исключения:

[Browsable(false)]
public new PropertyType PropertyName
{
    get { throw new InvalidOperationException("This property cannot be used with this control."); }
    set { throw new InvalidOperationException("This property cannot be used with this control."); }
}

Конечно, компилятор все равно все равно с радостью примет его, но он будет выдан во время выполнения.Однако даже в этом случае клиентский программист может по-прежнему обращаться к «исходному» свойству путем приведения к базовому типу, то есть вместо

myControl.PropertyName

они могут записать

((BaseControlType) myControl).PropertyName

, и этовсе еще работают.Вы ничего не можете с этим поделать (кроме производных от другого базового класса).

...