• 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

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

    Запись на курс до 25 апреля. Получить промодоступ ...

Проблемы с сохранением значения в свойтве контрола после ребилда

  • Автор темы Nikola
  • Дата начала
N

Nikola

Привет всем. Столкнулся вот с такой проблемой.
Создаю новый UserControl. Кидаю на него label и объявляю свойство контрола Label.

[codebox]public partial class MyLabel : UserControl
{

[Browsable(true)]
[Category("Options")]
[Description("Лейбл")]
public Label Label
{
get { return label; }
set { label = value; }
}

public MyLabel()
{
InitializeComponent();
}
}[/codebox]
После этого добавляю созданный контрол на форму и в дизайнере меняю свойство MyLabel.Label.Text, например на "Все отлично". На форме котрол поменял текст.
Потом делаю Rebuild проекта и вижу, что значение сбросилось :) и там снова стоит надпись "Все хреново" :p .
Кто может подсказать в чем тут проблема?
Спасибо.

Потом делаю Rebuild проекта и вижу, что значение сбросилось ;) и там снова стоит надпись "Все хреново" :p .
Кто может подсказать в чем тут проблема?
Спасибо.
Только что увидел, что после изменения свойства MyLabel.Label.Text в самом коде дизайнера не добавляется это изменение :).

Если добавить такое свойство:
[codebox][Browsable(true)]
[Description("Текст лейбла")]
public string Text
{
get { return label.Text; }
set { label.Text = value; }
}[/codebox].
Изменить в дизайнере MyLabel.Text и перебилдидь, все отлично сохраняется.

Как это лечится?
 
N

Nikola

Скорее всего придеться редактор свой к этому делу писать, и сам лабел создавать динамически, а не в дизайнере контрола. Короче мороки многовато. Проще дать доступ к свойсвам (как во 2 вар.), которые доступны пользователю. Не думаю что их много.
Да, для данного примера свойств мало. Но реально это нужно будет реализовать для разных контролов, которые могут содержать по несколько разных объектов (TreeList, ComboBox, CheckedListBox...). А если это будет мой собственный контрол ctrl1 который я положу на другой контрол ctrl2 и когда я добавлю к ctrl1 новое свойство prop1, мне прийдется переписывать ctrl2 добавляя свойство prop1. Получается не очень хорошо.
 
N

Nikola

Nikola У вас с архитектурой не все в порядке, раз такие выкрутасы надо делать. Смотрите в сторону пересмотра ее.
Я не просил Вас рассматривать мою архитектуру, а попросил только помочь в решении проблемы. Архитектура нормальна.

Неужели никто больше с таким не сталкивался?
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!