コンボボックスの横に小さなピック ボタンとして常に使用するボタンがあります。ボタンをクリックすると、より大きな完全なリストが開きます。物事のこの側面はうまく機能し、私はこれに問題はありません..
私の問題は、あなたが選んだ醜いアイコンを私の素敵なアイコンに変更してもらえないかと誰かが私に言ったときです。
私はがらくたになりました、私は多くのフォームにこれらのボタンを何百も持っています。そこで、PickButton というカスタム コントロール (標準のボタンと既定のプロパティ セットのヒープ) を作成し、代わりにフォームのどこにでもドロップすることにしました。PickButton カスタム コントロールのコードでは、いくつかのプロパティと画像を顧客の素敵なアイコンに設定しました。
そこで、ツールボックスからフォームに PickButton をドロップしました。今度は、顧客が選択した安っぽいアイコンではなく、自分の素敵なアイコンに戻して、PickButton カスタム コントロールのコードを変更しようと考えています。しかし、PickButton の実行時のコードは、顧客アイコンを持つデザイナー ファイル内のコードの前に発生するため、その顧客アイコンを取り除くことはできません。
したがって、私の目的は、PickButton コントロールを作成し、アイコンやその他のプロパティを 1 か所で変更できるようにすることでした。すべてのプロパティは、コントロールのインスタンスが作成されてフォームに表示されるときに設定されます。
私はそれほど賢くなく、間違った方法でタスクを達成しようとしましたか???
これは私の 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")));