2012-04-21 16 views
0


デザイナーモードでTableLayoutPanel(たとえば8x8 rowsxcolumns)を作成した後、この「マトリックス」の各フィールドにボタンを追加しました。イベントを一元的に処理する方法はありますか? TableLayoutPanelにTabIndexChangedがあることがわかりましたが、これが私には便利かどうかはわかりません。
これが可能かどうかを調べようとしています:
私は2番目のボタンをクリックし、クリックしたボタンに関する情報を取得し、彼のプロパティのいくつかを変更することができます - アイコンやテキスト。
は、私が「マトリックス」または「アレイ」としてtablelayoutpanelを理解するだろうし、私はそれでこのような何かを仕事をしたいという考えを想像することができます:
ボタンイベントのあるTableLayoutPanel

1)I'll click on button on possition i (or i,j) 
2)I'll change the Icon of button on possition i (or i,j) 

が可能ということですか?はいの場合、どうですか?
Thxを

答えて

1

の内側にあなたは、単一を持つことができますボタンのクリックイベントをすべて処理してから、senderパラメータを使用してボタンの画像を変更します。

private void CreateButtons(object sender, EventArgs e) 
    { 
     for (int i = 0; 8 < length; i++) 
     { 

      for (int j = 0; 8 < length; i++) 
      { 
       var btn = new Button() { Text = "Something" }; 
       btn.Click += new EventHandler(btn_Click); 
       this.tableLayoutPanel1.Controls.Add(btn, i, j); 
      } 
     } 

    } 

    void btn_Click(object sender, EventArgs e) 
    { 
     ((Button)sender).Image= SomeMethodThatReturnsAnImage(); 
    } 

コントロールのTabIndexプロパティが変更されますときにのみ、通常、非常にまれであるため、調達さておきTabIndexChangedはあなたに完全に役に立たないだろうと。ユーザーがTabキーを押したときのコントロールの順序を制御するためにTabIndexプロパティが使用されることを思い出してください。

0

はあなただけで、単一のイベントハンドラで、すべてのボタンのクリックイベントを関連付ける必要がありような音、そしてその後、クリックされたボタンを操作するなど、イベントハンドラ

+0

私たちが同じことを言っているのであれば、あなたは事実上ちょうど私の質問を書き直しました:D 私は8x8ボタンを持つことができますが、100x100ボタンを持つこともできます... – user1097772

+0

私はあなたの質問を読むすべてのボタンのクリックイベントを1つのハンドラに配線していたことを確認してください。私はConrad Frixと同じソリューションを提案しました。私はもっ​​と詳しく説明しますか? –

関連する問題