Как скрыть некоторые свойства управления по умолчанию во время разработки (С#)?
У меня есть пользовательский элемент управления, который я создал. Он наследует от System.Windows.Forms.Control
и имеет несколько новых свойств, которые я добавил. Возможно ли показать мои свойства (например, TextOn и TextOff) вместо свойства по умолчанию "Текст".
Мой контроль работает отлично, я просто хотел бы загромождать окно свойств.
Ответы
Ответ 1
Вы можете либо переопределить их (если они могут быть переопределены), и применить атрибут Browsable
, указав false
, или создать новую версию свойства и применить тот же атрибут (этот второй подход не всегда работает так YMMV).
Кроме того, вы можете использовать TypeConverter
для своего типа и переопределить GetProperties
для управления отображением свойств для вашего типа. Этот подход более устойчив к изменениям базовых классов, но может принести больше усилий в зависимости от того, чего вы хотите достичь.
Я часто использую комбинацию атрибута Browsable
и пользовательский TypeConverter
.
Ответ 2
Отмените свойство и добавьте [Browsable(false)]
.
Вы также можете добавить [EditorBrowsable(EditorBrowsableState.Never)]
, который скроет свойство в IntelliSense в редакторе кода. Обратите внимание, что он будет скрыт только в отдельном решении от исходного элемента управления.
Ответ 3
с использованием System.ComponentModel;
[Browsable(false), DesignerSerializationVisibility(
DesignerSerializationVisibility.Hidden)]
public int MyHiddenProp {get; set; }
работал у меня таким образом, что он не будет отображаться в конструкторских свойствах, а свойство не будет инициализироваться дизайнером, что бы переопределить мою собственную инициализацию....
Ответ 4
Вы ищете атрибуты времени разработки, в частности BrowsableAttribute.
DefaultPropertyAttribute устанавливает, какое свойство является стандартным для редактирования.