2017-02-02 36 views
0

私は動的に割り当てられたボタンのグリッド(カスタムサイズの)を動的に作成できる小さなデスクトップのGUIに取り組んでいます。私はそれを有効にすることができましたが、今は各ボタンを一意に識別する方法を見つけようとしています。動的に作成されたコントロールにカスタムイベントハンドラを追加する[C#]

ここでは、コントロールの作成時に、他のすべてのイベントハンドラーからユニークなイベントハンドラーを割り当てる方法を見つけようとしています。ボタンをクリックするとそのボタンだけが色を変更します。明確にするために、これはC#をデスクトップアプリケーションとして使用しています。私はwinformsを使用しています。

コード例:

buttonArray[i, k] = new Button(); 
       buttonArray[i, k].Name = "b_" + i.ToString() + "_" + k.ToString(); 
       //**FIGURE OUT HOW TO PASS THE NAME VARIABLE 
       buttonArray[i,k].Click +=delegate 
       { 
        MessageBox.Show(i.ToString() + " " + k.ToString()); 
        // Change the color of b_xlocation_ylocation 
       }; 

ありがとうございました!

+0

ボタンが識別uniqのためにNameプロパティを持っています。追加されたボタンの数を格納するには、counterを使用します。 '' dynButton "+ globalCounter'のような名前です。そして、カラーハンドラの変更について - 動的にボタンを作成するときに追加します。どうしたの? – Sergio

答えて

0

ボタンをクリックするたびにハンドラをアタッチするだけで、イベントが発生したときに色を設定できない理由がわかりません。色は、イベントの送信者パラメータを使用している間だけクリックされたボタンに設定されます。おそらく、達成しようとしていることの詳細を提供する必要があります。

次のことを試してみてください...

 buttonArray[i, k].Click += delegate(object sender, EventArgs e) 
     { 
      MessageBox.Show(i.ToString() + " " + k.ToString()); 
      // Change the color of b_xlocation_ylocation 

      var buttonThatWasClicked = (Button) sender; 
      buttonThatWasClicked.BackColor = Color.Red; 
     }; 
+0

たぶん私は説明がうまくいっていませんでした。色を変更するときに何を参照するのかわからないので、(クリック)イベントを作成するのが難しいです。ボタンをクリックすると、ボタンの名前にアクセスするのが難しいため、そのボタンの色を変更する方法がわかりません。 私は現在、ボタンタイプの2D配列としてボタンを作成しています。 – SunBurntIcarus

+0

これまで持っていたボタンのクリックを処理しているメソッドのコードスニペットを投稿できますか? – pmcilreavy

+0

投稿の説明が更新されました。私はそこにコードを持っています。私はここで動作するようにコードを取得しようとしたすべての通知について申し訳ありません.. – SunBurntIcarus

関連する問題