У меня есть кнопка, которую я все время использую как маленькую кнопку выбора рядом с полем со списком. Когда я нажимаю кнопку, я открываю большой полный список. Эта сторона вещей работает хорошо, и у меня нет проблем с этим.
Моя проблема заключается в том, что кто-то сказал мне, не могли бы вы изменить эту уродливую иконку, которую вы выбрали, на мою красивую иконку.
Я обосрался, у меня сотни этих кнопок на многих формах. Поэтому я подумал, что создам настраиваемый элемент управления под названием PickButton (который представляет собой стандартную кнопку и кучу наборов свойств по умолчанию) и вместо этого разместит их на форме повсюду. В коде пользовательского элемента управления PickButton я установил некоторые свойства и изображение для симпатичного значка клиента.
Итак, я бросаю PickButton из своего набора инструментов на форму, пока все выглядит довольно хорошо, и я чувствую себя немного умнее. Теперь я думаю про себя, что вернусь к своему красивому значку, а не к дрянному, который выбрал клиент, и изменю код в пользовательском элементе управления PickButton. Но я не могу избавиться от этого значка клиентов, потому что код при запуске PickButton происходит до кода в файле конструктора, который имеет значок клиентов.
Итак, моя цель состояла в том, чтобы иметь элемент управления PickButton и иметь возможность изменять значок и другие свойства в одном месте, и все свойства будут установлены при создании и отображении экземпляра элемента управления в форме.
Я был не настолько умен и пошел к решению задачи не тем путем???
Это мой пользовательский класс управления PickButton.
public class PickButton : Button
{
public PickButton()
{
InitialiseButton();
}
internal void InitialiseButton()
{
this.ImageAlign = ContentAlignment.MiddleCenter;
this.Image = WindowsFormsApplication1.Properties.Resources.Cancel.ToBitmap();
this.Size = new Size( 28, 28 );
this.Dock = DockStyle.Fill;
this.Margin = new Padding( 0, 2, 2, 0 );
this.Text = string.Empty;
}
}
Теперь я бросаю один на свою форму, и код в дизайнере выглядит следующим образом
//
// pickButton1
//
this.pickButton1.Dock = System.Windows.Forms.DockStyle.Fill;
this.pickButton1.Image = ((System.Drawing.Image)(resources.GetObject("pickButton1.Image")));
this.pickButton1.Location = new System.Drawing.Point(0, 0);
this.pickButton1.Margin = new System.Windows.Forms.Padding(0, 2, 2, 0);
this.pickButton1.Name = "pickButton1";
this.pickButton1.Size = new System.Drawing.Size(284, 262);
this.pickButton1.TabIndex = 0;
this.pickButton1.Text = "pickButton1";
this.pickButton1.UseVisualStyleBackColor = true;
Теперь я хочу изменить изображение, поэтому я изменяю свой код PickButton, чтобы использовать другой значок.
this.Image = WindowsFormsApplication1.Properties.Resources.Browse.ToBitmap();
Запустите приложение, и первый значок по-прежнему отображается из-за этой строки кода в файле конструктора.
this.pickButton1.Image = ((System.Drawing.Image)(resources.GetObject("pickButton1.Image")));
PickButton
? - person Cody Gray   schedule 26.07.2013OnLoad
(или что-то подобное, моя память немного нечеткая) и переназначьте значок на свой там. - person Sameer Singh   schedule 27.07.2013