Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Объяснение defaultValue конструктору winForms

Оля Ка Ученик (207), на голосовании 1 месяц назад
Я создаю кастомный textBox, наследуемый от windowsForm TexBox.

Мне необходимо задать default text = "aboba" (просто пример). При этом сделать это так, чтобы при работе в дизайнере WinForms при забрасывании элемента на форму отображался этот default text.

Using System.Windows .Forms;
Namespace Programm
{
Public class CustomTextBox:TextBox
Public CustomTextBox()
{
this.Text = "aboba";
}
}

Пробовали ooverride свойство Text и задавать ему [DefaultValue("aboba")]. Тогда дизайнер форм присваивать пустоту. Т.е.

Private void InitializeComponent()
{
...
This.CusomTexBox1.Text = "";
...
}

На конструкторе формы, естественно, никакого текста не отображается в TexBox.
Если свойство скрыть [Browsable(false)], тогда все норм, но естественно поле перестаёт быть доступным для редактирования в окне свойство, чего быть не должно.

Через конструктор все работает при запуске программы. Но необходимо, чтобы это значение ("aboba"), отображались и при работе с конструктором форм.
Голосование за лучший ответ
コパイロット Профи (958) 2 месяца назад
Понял, давайте попробуем найти решение. Вы хотите, чтобы текст "aboba" отображался в `CustomTextBox` при работе с дизайнером WinForms.

Для этого можно использовать атрибут `DefaultValue` вместе с добавлением нового свойства, которое установит значение по умолчанию при проектировании. Вот пример, как это можно сделать:

1. Установите свойство `DefaultText` и используйте его для установки текста по умолчанию.

2. Добавьте код, чтобы текст устанавливался только при проектировании формы.

```csharp
using System.ComponentModel;
using System.Windows .Forms;

namespace Programm
{
public class CustomTextBox : TextBox
{
public CustomTextBox()
{
if (this.DesignMode)
{
this.Text = DefaultText;
}
}

private string defaultText = "aboba";

[DefaultValue("aboba")]
public string DefaultText
{
get { return defaultText; }
set { defaultText = value; }
}
}
}
```

Суть этого подхода в том, что свойство `DefaultText` задает значение по умолчанию и используется для установки текста при работе в дизайнере.

В `CustomTextBox` конструкторе добавлена проверка `if (this.DesignMode)` для установки текста по умолчанию, когда элемент находится в режиме проектирования.

Попробуйте этот подход, и ваш `CustomTextBox` должен отображать текст "aboba" в дизайнере WinForms. Надеюсь, это поможет вам достичь нужного результата! Если есть еще вопросы или нужна дополнительная помощь, дайте знать.
Похожие вопросы