2011-05-01 5 views
1

나는 mdichild와 draganddrop에 대한 이벤트 핸들러를 가지고 있으므로, 이미지 파일을 내 양식에 놓으면 그 이미지와 함께 picturebox (name = dpic)가 생성됩니다.각 컨트롤에 이벤트 핸들러를 만들지 않고 마우스 포인터 아래에서 컨트롤의 이름을 가져 오는 방법은 무엇입니까?

나는 dpic_Click을위한 다른 이벤트 핸들러를 가지고 있으므로 이미지를 클릭하면 폼의 텍스트가 해당 이미지의 이름이됩니다.

처음으로 이미지를 놓은 후 다른 dpic이 생성됩니다. 동일한 이름을 가진 두 개의 cotrol을 가질 수 없기 때문입니다. C#은 자동으로 이름을 변경하고 내 이벤트 핸들러는 내가 놓은 마지막 이미지에 대해서만 작동합니다. 마우스 포인터 아래에있는 컨트롤의 이름을 가져 오는 mdichild 이벤트 핸들러를 간단하게 변경할 수 있다면 내가 가리키고있는 이미지를 뒤로. 여기

UPDATE 내 코드입니다, 내 mdichild에 떨어 뜨릴에 대한 이벤트 처리기를 만들어 :

void mdiChild_DragDrop(object sender, DragEventArgs e) 
    { 
     if (e.Data.GetDataPresent(DataFormats.FileDrop)) 
     {     
      dpic = new PictureBox() ; 
      string[] filepath = (string[])e.Data.GetData(DataFormats.FileDrop); 
      Image image = Image.FromFile(filepath[0]); 
      dpic.Image = image; 
      dpic.Tag = Path.GetFileName(filepath[0]);     
      this.ActiveMdiChild.Controls.Add(dpic); 
      dpic.ContextMenuStrip = this.contextMenuStrip1; 
      this.ActiveMdiChild.Refresh(); 
      dpic.BringToFront(); 
      this.ActiveMdiChild.ActiveControl = dpic; 

      dpic.Click += new EventHandler(dpic_Click); 
// _____this helped me do it_________________________________________________ 
      foreach (Control c in this.ActiveMdiChild.Controls) 
      { 
       c.Click += new EventHandler(c_Click); 
      } 
// ________________________________________________________________________ 
     } 
    } 
+0

WPF? 실버 라이트? Winforms? ASP? 플랫폼에 대해 말하면 해결책에 대해 더 잘 알고 있습니다. –

+0

내 플랫폼은 Windows Vista입니다. – Pedrum

+0

코드 스 니펫을 제공하지 않았기 때문에 사용자가 답변을 할 때 추측 할 수 있으며 답변을 통합하기가 어려울 수 있습니다. 사람들이 귀하의 특정 문제에 대해 더 나은 답변을 제공 할 수 있도록 코드를 제공하십시오. –

답변

0

뭘 찾는 것은 보낸 사람입니다. 발신자는 어떤 이미지를 클릭했는지 알려 주어 이름을 알 수 있습니다.

PictureBox picSender = (PictureBox)sender; 
label1.Text = picSender.Name; 

편집 : 당신은 pic_Click 이벤트

+0

괜찮 았어. 근데 지금은 또 다른 문제가 있다고 생각하지 않아. – Pedrum

+0

나는 그걸 추가했고, 단지 하나의 그림 상자가있을 때만 작동했습니다. – Pedrum

+0

코드를 틀린 장소에 놓았어야합니다.모든 그림 상자는 동일한 이벤트에 연결되어야합니다 – MrRoy

0

에 그것을 넣어 내가 정확히 당신이 뭘 원하는지 이해하지 못하고, 아마도 새로운 pictureboxes 레이어링 양식에 이미지를 떨어?

그 때문에 당신이

List<PictureBox> picboxes = new List<PictureBox>(); 

와 당신이 사용할 수있는 경우 :

dpic = new PictureBox() ; 

변화

PictureBox dpic = new PictureBox() ; 
picboxes.Add(dpic); 
this.Controls.Add(dpic); 

에를하지만이 선언 무제한 컨트롤을 가질 수 있음을 유의하시기 바랍니다 .

+0

에 대한 작업을 수행 했으므로 어떻게 해당 그림 상자에 이벤트 처리기를 둘 수 있습니까? – Pedrum

+0

dpic.Click + = 새 EventHandler (somemethodinyourform); –