Можно ли запретить представлению дизайна SharpDevelop установить значение свойства в InitializeComponent? - PullRequest
3 голосов
/ 18 января 2011

Я считаю, что Design View (DV) - это хорошо, но попытаться изменить способ автоматического введения кода в InitializeComponent очень сложно.И иногда его автоматический код нарушает работу программы.

Например, DV автоматически видит каждое отдельное свойство моего пользовательского элемента управления UserControl, а затем присваивает каждому отдельному свойству какое-то значение в InitializeComponent.Но я не хочу, чтобы он присваивал значения некоторым свойствам, потому что некоторые из моих установщиков будут генерировать исключение времени выполнения, если они не используются правильно.Я мог бы исправить InitializeComponent вручную, но всякий раз, когда я вносил изменения в дизайн, SharpDevelop просто заново генерировал функцию.

И есть еще один случай, когда у меня конструктор по умолчанию устанавливает размер на основе определенных факторовно тогда InitializeComponent немедленно установит для него другое статическое значение.

Как я могу сказать DV, что не автоматически назначает значения определенным свойствам, которые я определяю?

1 Ответ

4 голосов
/ 18 января 2011

Если я не понял ваш сценарий, похоже, что вы лаете не на то дерево, пытаясь изменить или перенастроить поведение SharpDevelop. Даже если вам удастся изменить его, вы не повлияет на поведение Visual Studio и не поможете другим пользователям вашего пользовательского элемента управления, которые не (или не хотят) настраивать их дизайнер соответственно.

Вместо этого кажется, что вы должны просто пометить свойства, предоставляемые вашим пользовательским элементом управления, атрибутом [DesignerSerializationVisibility] . Это указывает разработчику, как именно значение этого свойства должно быть сериализовано в метод InitializeComponent.

У вас есть выбор три разных значения :

  • Visible указывает, что значение свойства должно быть сохранено в коде инициализации
  • Hidden указывает, что значение свойства должно не сохраняться в коде инициализации
  • Content указывает, что код инициализации должен создаваться для каждого открытого (не скрытого) свойства объекта, назначенного свойству

Значением по умолчанию является Visible, что приводит к сериализации значения свойства при любой возможности.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...