Проблемы с проектированием.Net UserControl
-
08-06-2019 - |
Вопрос
Я создал пользовательский элемент управления, который имеет ListView
в нем.ListView является общедоступным через свойство.Когда я помещаю UserControl в форму и пытаюсь спроектировать ListView
несмотря на то, что собственность, ListView
остается таким образом до тех пор, пока я не скомпилирую его снова и он не вернется к состоянию по умолчанию.
Как мне добиться того, чтобы мои изменения в дизайне соответствовали ListView
?
Решение
Вам нужно украсить свойство ListView атрибутом DesignerSerializationVisibility, например:
[DesignerSerializationVisibility(DesignerSerializationVisibility.Content)]
public ListView MyListView { get { return this.listView1; } }
Это указывает генератору кода разработчика вывести для него код.
Другие советы
Фредрик в принципе, это правильно, когда вам нужно разрешить дизайнеру сохранять свойство на странице, чтобы его можно было создать во время выполнения.Есть только один способ сделать это - записать его значения на страницу ASPX, которая затем распознается средой выполнения.
В противном случае элемент управления будет просто возвращаться к своему состоянию по умолчанию каждый раз.
Всегда имейте в виду, что Страница (и ее содержимое) и код полностью разделены в ASP.NET, они подключаются во время выполнения.Это означает, что вы не получаете приятной поддержки разработчика, стоящего за кодом, как в приложении WinForms (где форма является экземпляром объекта).
Просто чтобы мне было ясно, вы делали что-то подобное, не так ли?
public ListView MyListView { get { return this.listView1; } }
Итак, тогда вы получаете доступ (во время разработки) к свойству MyListView в вашем UserControl?
Я думаю, если вам нужна надлежащая поддержка во время разработки, вам лучше изменить свойство "Modifier" в самом ListView (обратно в исходном UserControl) на Public - таким образом, вы можете изменять ListView непосредственно в экземплярах UserControl.В любом случае, я добился успеха в этом.