2012-09-14 25 views
1

我想點擊一個Panel的鼠標右鍵單擊事件並調用一個函數,但它沒有觸發。這是我的代碼:mouse_right click事件不適用於使用c#的winform面板?

private void viewscreen_MouseClick(object sender, MouseEventArgs e) 
{ 
    if (e.Button == MouseButtons.Right) 
    { 
     generate_editpanel(); 
    } 
} 

「視屏」 是Panel。我的設計師代碼是:

// viewscreen 
// 
this.viewscreen.BackColor = System.Drawing.SystemColors.ActiveCaptionText; 
this.viewscreen.Location = new System.Drawing.Point(208, 16); 
this.viewscreen.Name = "viewscreen"; 
this.viewscreen.Size = new System.Drawing.Size(370, 289); 
this.viewscreen.TabIndex = 0; 
this.viewscreen.MouseClick += 
    new System.Windows.Forms.MouseEventHandler(this.viewscreen_MouseClick); 

任何人都可以幫助我嗎?

+0

檢查事件是否會在沒有'e.Button == MouseButtons.Right'的情況下引發 – opewix

+0

否viewcreen_MouseClick事件未觸及 – Drone

+0

:)嗯,嘗試檢查面板中的其他事件像鼠標懸停,他們工作 – opewix

回答

1

面板中的視頻對象必須覆蓋面板的整個區域(停靠)。在這種情況下,面板的事件不會被解僱,因爲所有的點擊都將發生在視頻對象上。
但是,如果您仍然希望消防面板的情況下,您可以修改窗體設計器這樣的代碼:

this.pictureBox1.MouseClick += new System.Windows.Forms.MouseEventHandler(this.pictureBox1_MouseClick); 
this.pictureBox1.MouseClick += new System.Windows.Forms.MouseEventHandler(this.viewscreen_MouseClick); 

這裏,我已經在面板(視屏)停靠一個圖片(pictureBox1)。現在在表單代碼,你可以測試這樣的:

private void viewscreen_MouseClick(object sender, MouseEventArgs e) 
    { 
     if (e.Button == MouseButtons.Right) 
     { 
      MessageBox.Show(this, "Right Clicked on Panel"); 
     }    
    } 
private void pictureBox1_MouseClick(object sender, MouseEventArgs e) 
    { 
     MessageBox.Show(this, "Picture Clicked"); 
     //this.viewscreen_MouseClick(sender, e); 
    } 
+0

是的,但是我在解決這個問題時在最後幾分鐘看到的是,MouseClick事件可能doesn' t爲面板工作,但MouseDown事件並保存我 – Drone

0

粘貼此處與this.viewscreen有關的完整代碼....如果在該面板上有任何其他控件,那麼這些控件將不允許鼠標單擊面板。最頂級的控制事件將觸發

+0

是的,我在該面板上有一個視頻對象...該面板作爲我的視頻的屏幕.. – Drone

+0

該視頻對象是完全停靠在該面板上嗎? – andy

+0

'video = new Video(vpath [0]); video.Owner = viewscreen; video.Stop(); viewscreen.Size = new Size(width,height);' 這是我在做什麼 – Drone

0

的,而不是...

private void viewscreen_MouseClick(object sender, MouseEventArgs e) 
{ 
    if (e.Button == MouseButtons.Right) 
    { 
     generate_editpanel(); 
    } 
} 

使用此...

private void viewscreen_MouseDown(object sender, MouseEventArgs e) 
    { 
     if (e.Button == MouseButtons.Right) 
     { 
      generate_editpanel(); 
     } 
    } 

爲我工作

相關問題