Здравствуйте.
Такая проблемка выявилась. Делаю наследника от UserControl, называю его TextUserControl.
В дизайнере ставлю на него TextBox (генерируется имя textBox1). Вот весь исходник TextUserControl:
public partial class TextUserControl : UserControl
{
public TextUserControl()
{
InitializeComponent();
}
[Browsable(true), DefaultValue("")]
public override string Text
{
get
{
return textBox1.Text;
}
set
{
textBox1.Text = value;
}
}
}
Компилирую. Создаю форму и в дизайнере ставлю на нее TextUserControl.
Все успешно, но в textBox1 уже проставлен текст
textUserControl1.
Кто его туда поставил и как заменить его на другое, например пустое, значение?
Кстати, если атрибут Browsable убрать, то простановки текста не происходит.
Здравствуйте, Yuri, Вы писали:
Y>Здравствуйте, maximkharitonov, Вы писали:
Y>дизайнер проставил, думаю
Y>в дизанере же и убрать
Да, спасибо, насчет дизайнера уже нашел. Сделал следующий рабочий вариант дизайнера:
public override void InitializeNewComponent(System.Collections.IDictionary defaultValues)
{
PropertyDescriptor textPropDesc = TypeDescriptor.GetProperties(Component)["Text"];
if (textPropDesc != null &&
textPropDesc.PropertyType == typeof(string) &&
!textPropDesc.IsReadOnly &&
textPropDesc.IsBrowsable)
{
textPropDesc.SetValue(Component, "");
}
}
Все почти устраивает. "Почти" выражается в том, что теперь при перетаскивании компонента на форму текст
в контроле появляется на мгновение, потом исчезает. Почему-то не работает следующий, на мой взгляд даже
более логичный вариант:
public override void InitializeNewComponent(System.Collections.IDictionary defaultValues)
{
if (defaultValues.Contains("Text"))
defaultValues["Text"] = "";
else
defaultValues.Add("Text", "");
base.InitializeNewComponent(defaultValues);
}
Может есть предположения почему последний вариант не работает?
Здравствуйте, maximkharitonov, Вы писали:
M>Все почти устраивает. "Почти" выражается в том, что теперь при перетаскивании компонента на форму текст
M>в контроле появляется на мгновение, потом исчезает.
Думаю что это нормально, у стандартных контролов так же. Кстати спасибо что отписали, я вот не знал что это так контролируется