2013-07-03 2 views
2

Я пытаюсь добавить некоторые поля к пользовательскому UserControl, который я делаю. У меня есть поля, которые мне нравятся, чтобы они были видны в окне PropertiesVisual Studio. Я попытался использовать приведенные ниже флаги, но я не вижу поля в дизайнере даже после компиляции.Показывать общедоступные поля UserControl в дизайнере

Как это сделать правильно?

public partial class TosChartControl: UserControl 
{ 

    #region PUBLIC FIELDS 

    [Browsable(true)] //Added this but still does not show up 
    [Category("Data")] 
    [DefaultValue(0)] 
    [Description("ID of the Sensor Node")] 
    public int NodeId { get; set; } 

    #endregion 

    public TosChartControl() 
    { 
     InitializeComponent(); 
    } 
} 

Я очистил и восстановил soloution и проекты, но я не могу видеть это поле в окне свойств. Даже перезапуск Visualstudio не помог.

+1

Вы можете присоединиться атрибуты вместе через запятую [attr1, attr2], (ответ henginy правильна) – Sayse

+0

Так 'NodeId' приходит в окне свойств?Я думаю, он должен быть там, если его атрибут get/set – Sandy

+0

Да и должен идти в категории данных –

ответ

1

ОБНОВЛЕНИЕ: Ваши общедоступные свойства видны в дизайнере только в том случае, если он находится в другом контроле в дизайнере. Получается, что вам не нужно необходимо добавить этот атрибут, свойства по умолчанию видны в дизайнере. Насколько я понимаю, когда он находится в дизайне другого компонента, создается экземпляр пользовательского элемента управления и отображаются свойства. Извините за ввод в заблуждение в начале, я подумал, что нужно добавить его.


Попробуйте этот атрибут:

[Browsable (истина)]

http://msdn.microsoft.com/en-us/library/system.componentmodel.browsableattribute.aspx

+0

Спасибо. Где я должен добавить этот атрибут? для самого класса или для каждого поля? У меня есть некоторые usercontrols (сделанные другими), что они работают без этого атрибута тоже. –

+0

Вы должны добавить атрибут к членам (а не к пользовательскому элементу управления) К NodeId например – henginy

+0

Как-то он не работает :( –

0

Чтобы уточнить обновленный ответ henginy в:

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

Чтобы уточнить, когда вы добавляете свойство к вашему TosChartControl классу, вы не увидите свойство во вкладке TosChartControl.cs [Design], вы увидите его там, где вы реализуете TosChartControl, такие как Form1.cs [Design] вкладку, например, содержащий элемент управления, к которому у вас есть добавлен ваш пользовательский контроль.

... Предполагая, что окно «Свойства» видно и что вы выбрали этот элемент управления.

Что увезти из этого урока:

  • Понимание того, что окно свойств на самом деле показать вам, - это контекстная.

  • Разница между моделью и реализацией модели - например, Разработка пользовательского элемента управления и разработка формы, использующей настраиваемый элемент управления.

Смежные вопросы