mouse_right click事件不适用于使用c#的winform中的面板?

时间:2012-09-14 05:17:33

标签: c# winforms panel

我正在尝试触发鼠标右键单击Panel的事件并调用一个函数但它没有触发。这是我的代码:

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

“viewscreen”是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);

任何人都可以帮助我吗?

3 个答案:

答案 0 :(得分:1)

Panel中的视频对象必须覆盖Panel的整个区域(停靠)。在这种情况下,面板的事件不会被触发,因为所有点击都将发生在视频对象上 但是,如果您仍希望触发面板事件,则可以修改表单设计器代码,如下所示:

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

这里我将PictureBox(pictureBox1)停靠在面板(viewscreen)中。现在在表单代码中,您可以像这样测试:

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);
    }

答案 1 :(得分:0)

粘贴此处与this.viewscreen相关的完整代码....如果该面板上有任何其他控件,那么这些控件将不允许鼠标单击面板。最重要的控制事件将触发

答案 2 :(得分: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();
        }
    }

正在为我工​​作