2011-01-18 7 views
2

私はFormを持っています、それは1 PanelとPanelに0-N PictureBoxがあります - Panelに動的に追加されましたが、PictureBox上にマウスを置いてクリックすると何も起こりません。 Panelをクリックするとクリックメソッドが起動しますが、そのPictureBoxも同じように動作することを確認するにはどうすればいいですか?パネルコントロールでイベントを受信する方法は?

答えて

4

ピクチャボックスはdinamically追加されるので、クリックイベントのイベントハンドラをコードに添付する必要があります。

PictureBox pbx = new PictureBox(); 
pbx.Click += new EventHandler(pbx_Click); 
//Now assign other properties and then add it to control collection 
//panel1.Controls.Add(pbx); 



private void pbx_Click(object sender, EventArgs e) 
{ 
    //handle the click event here 
} 
+0

あなたが意味:pbx.Click + =新しいEventHandlerの(pbx_Click) ; – tzup

+0

ああ、その厄介な間違いで申し訳ありません。ちょうど私のコードが更新されました... –

2

..あなたがコントロールコレクションに追加する直前に、このように気にいらを行い、あなたのPictureBoxesがパネルに動的に追加されており、その後、ピクチャボックスのClickイベントも追加する必要があります。あなたがPictureBoxesのすべてが同じハンドラでイベントをクリックして処理することができます

注:あなたがアイデアを得る

for (int i = 0; i < 10; i++) 
      { 
       PictureBox pb = new PictureBox(); 
       pb.Name = "pb" + i; 
       pb.Click +=new EventHandler(pb_Click); 
       this.Controls.Add(pb); 
      } 

void pb_Click(object sender, EventArgs e) 
     { 

      PictureBox pb = (PictureBox) sender; 
      if (pb.Name == "pb1") 
      { 
       ... 
      } 
     } 

...

+0

+1の新しいEventHandler –

関連する問題