2013-10-14 2 views
0

PictureBox에서 상속 된 사용자 지정 PictureBox 클래스를 만들고 싶습니다.사용자 지정 상속 된 클래스의 MouseClick 이벤트 처리기

public partial class Custom : PictureBox 
{ 
    public Custom() 
    { 
     this.Size = new System.Drawing.Size(20, 20); 
     this.Image = WindowsFormsApplication1.Properties.Resources.icon; 
    } 

    private void Custom_MouseClick(object sender, MouseEventArgs e) 
    { 
     if (e.Button == System.Windows.Forms.MouseButtons.Right) 
     { 

     } 
    }  
} 

또한 contextMenuStrip을 만들었지 만 내 MouseClick 이벤트에 액터를 연결할 수 없습니다. 내가

contextMenuStrip1.Show(Cursor.Position);

를 사용하려고하면 나는 contextMenuStrip1이 현재 컨텍스트에 존재하지 않는다는 오류가 발생합니다. 이 이벤트를 어떻게 처리할까요?

+0

contextMenuStrip1은 양식의 코드에 정의되어 있으므로 사용자 지정 그림 상자에서 사용할 수 없습니다. 이 클래스에 새 클래스를 만들어 사용해야합니다. – user2737037

답변

0

내가 처리 한 방식은 간단합니다. 우선 MouseClick 이벤트를 처리 할 대리자를 만들어야했습니다.

this.MouseClick +=Custom_MouseClick; 

그런 다음 메뉴 객체를 만들고 채우는 모든 필요한 정보

private void Custom_MouseClick(object sender, MouseEventArgs e) 
    { 
     if (e.Button == System.Windows.Forms.MouseButtons.Right) 
     { 
      ContextMenuStrip menu = new ContextMenuStrip(); 

      ToolStripMenuItem addItem = new ToolStripMenuItem(); 
      addItem.Name = "AddMenuItem"; 
      addItem.Text = "Add"; 
      menu.Items.Add(addItem); 

      ToolStripMenuItem editItem = new ToolStripMenuItem(); 
      editItem.Name = "EditMenuItem"; 
      editItem.Text = "Edit"; 
      menu.Items.Add(editItem); 

      menu.Show(Cursor.Position); 
      menu.ItemClicked += menu_ItemClicked; 
     } 
    } 

을 그리고, 내 메뉴 작업을하기 위해 나는 ItemClicked 메뉴 이벤트를 처리하는 또 다른 대리자를 만들 수 있었다.

void menu_ItemClicked(object sender, ToolStripItemClickedEventArgs e) 
    { 
     [code] 
    } 
관련 문제