Как избежать набора текста кнопки в дизайнере - PullRequest
2 голосов
/ 24 марта 2012

У меня есть библиотека. В библиотеке у меня есть кнопка с Green цветом фона и текстом как Go Green.

Теперь я создал проект winform и перетащил свою зеленую кнопку Go в форму. При запуске приложения я заметил, что цвет кнопки меняется на зеленый, но текст отображается как button1 (имя библиотеки классов).

Моя библиотека выглядит так:

public class button : Button
{
    public Seats()
    {
        button.BackColor = Color.Green;
        button.Text = "Go Green";
    }
}

Я обнаружил, что это происходит потому, что метод InitializeComponent() вызывается в конструкторе формы. А в designer.cs,

button.Text = "button1";

называется. Как я могу избежать этого? Я хочу, чтобы мой текст был виден из моей библиотеки классов.

Примечание. Когда я вручную удалил приведенный выше код из файла designer.cs, все работало нормально.

1 Ответ

4 голосов
/ 24 марта 2012

Самый простой способ - переопределить свойство Text кнопки и сделать его скрытым для сериализации дизайнера:

[DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
public override string Text
{
    get { return base.Text; }
    set { base.Text = value; }
}

Дизайнер добавит имя кнопки по умолчанию, но при создании приложения будет отображаться ваш текст.

ОБНОВЛЕНИЕ: Другой (более сложный) способ - предоставить дизайнеру значение свойства по умолчанию для вашей кнопки. В этом случае вам нужна ссылка System.Design.dll, которая доступна только для полной версии .net framework (не версии профиля клиента).

Первое: создайте конструктор элементов управления для вашей кнопки

public class GoGreenButtonDesigner : System.Windows.Forms.Design.ControlDesigner
{
    public override void OnSetComponentDefaults()
    {
        base.OnSetComponentDefaults();
        Control.Text = "Go Green";
    }
}

Последнее: добавить атрибут Designer в пользовательский класс кнопок

[Designer(typeof(GoGreenButtonDesigner))]
public class GoGreenButton : Button
{
   //...
}

Вот и все. Теперь, когда вы перетаскиваете кнопку в форму, она будет иметь текст по умолчанию «Go Green» без каких-либо дополнительных компиляций.

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