2017-01-08 5 views
0

저는 C#에서 상당히 익숙하며이 이벤트 핸들러에서 두 번 마우스 오른쪽 버튼을 클릭 할 수있는 방법이 있는지 알고 싶습니다. 아무도 말해 줄 수 있니? 감사C#에서 두 번 마우스 오른쪽 버튼을 클릭하여 사용

private void pictureBox_MouseClick(object sender, MouseEventArgs e){ 
    if(e.Button == MouseButtons.Left) 
    { 
     MessageBox.Show("A"); 
    } 
    else if(e.Button = MouseButtons.Right) 
    { 
     MessageBox.Show("B"); 
    } 
    else if(e.Button = MouseDoubleClick.Right) <--how to fix this? 
    { 
     MessageBox.Show("C"); 
    } 
    else 
    { 
     MessageBox.Show("D"); 
    } 
} 
+0

당신은 이벤트를 분리 할 수 ​​없습니다 하는가? – KyloRen

+0

@KyloRen 네,하지만 이런 식의 방법이 있는지 알고 싶습니까? – programnub

답변

1

당신은 MouseRightButtonDown 이벤트의 ClickCount 때에 프로퍼티를 사용할 수 있습니다.

private void OnMouseDownClickCount(object sender, MouseButtonEventArgs e) 
{ 
    if (e.ClickCount == 1) 
    { 
     // one click. 
    } 
    if (e.ClickCount == 2) 
    { 
     // two clicks. 
    } 
} 
+0

이 코드를 내 코드에 어떻게 구현할 수 있습니까? 아니면 별도의 이벤트에 있어야합니까? – programnub

+0

@programnub 당신은'MouseRightButtonDown' 이벤트를 사용할 수 있습니다. –

0

재정이 pinvoke 페이지에서 볼 수 있듯이 WM_RBUTTONDBLCLK의의 WndProc 함수를 듣고는, {0x0206}입니다.

그런 다음

public class RButton : Button 
{ 
    public delegate void MouseDoubleRightClick(object sender, MouseEventArgs e); 
    public event MouseDoubleRightClick DoubleRightClick; 
    protected override void WndProc(ref Message m) 
    { 
     const Int32 WM_RBUTTONDBLCLK = 0x0206; 
     if (m.Msg == WM_RBUTTONDBLCLK) 
      DoubleRightClick(this, null); 
     base.WndProc(ref m); 
    } 
}