Как скрыть свойство от перехода в файл конструктора форм? - PullRequest
0 голосов
/ 17 декабря 2010

Я работаю в VB.NET 2010 Framework 2.0.

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

Я использовал следующий код:

<DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)>
Public Property GradientBegin() As Color = Color.Red 

Но проблема, с которой я сталкиваюсь, заключается в том, что -> в сетке свойств после изменения GradientBeginmsgstr "вместо цвета КРАСНОГО и компиляции программы он заменяет новое измененное значение на КРАСНОЕ.Поэтому я не могу изменить цвет на самом деле.

Как мне этого добиться?

Спасибо за любой ответ заранее.

Ответы [ 2 ]

1 голос
/ 17 декабря 2010

Насколько я могу судить, вы просите о двух совершенно противоречивых вещах.

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

Поэтому, когда вы изменяете свойство GradientBegin на цвет, отличный от красного, эта настройка не сохраняется в вашемФайл конструктора формы .Вот почему, что бы ни происходило, при компиляции и запуске программы свойство GradientBegin возвращается к значению по умолчанию Color.Red.(И на тот случай, если вы не уверены, откуда берется это значение по умолчанию, это значение, которое вы указали при объявлении свойства: Public Property GradientBegin() As Color = Color.Red.)

Итак, вы должны решить, какое поведениевы действительно хотите. Хотите ли вы, чтобы дизайнер сохранял (сериализовал), как бы вы ни устанавливали свойство во время разработки?Если это так, вам нужно удалить атрибут DesignerSerializationVisibility из декларации вашего свойства.В противном случае, если вы хотите оставить этот атрибут, вам придется придерживаться любого значения по умолчанию для этого свойства, потому что это единственное, что ваша программа будет знать при запуске.Единственный другой вариант - явно установить свойство GradientBegin в вашем коде, а не оставлять дизайнера для этого.Это означает, что вы не можете установить его с помощью окна свойств во время разработки, но он позволяет оставить как атрибут DesignerSerializationVisibility, так и переопределить значение по умолчанию для свойства.

0 голосов
/ 05 января 2011

Если применить <DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)>, любое изменение этого свойства в сетке свойств не будет сохранено. Единственный способ сохранить изменения, сделанные в конструкторе, - это если вы do разрешите поместить его в файл конструктора.

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

Если ваша проблема в том, что вы устанавливаете свойство из кода, но оно все равно снова становится красным, это потому, что дизайнер сериализовал его до , когда вы применили атрибут, и он все еще в дизайнерском файле. В этом случае вам нужно перейти в файл ClassName .designer.vb и удалить оставшуюся строку, которая устанавливает красный цвет. Он не появится снова, если у него есть атрибут DesignerSerializationVisibility.

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