C# 如何处理TableLayoutPanel单元格中的鼠标双击?

C# 如何处理TableLayoutPanel单元格中的鼠标双击?,c#,winforms,C#,Winforms,我有一个WinForm中的TableLayoutPanel。TableLayoutPanel的单元格由自定义用户控件动态填充。每个用户控件都用于使用DevExpress图表工具显示图表。这背后的原因是将图表排列成几行,每行包含三列 现在,由于图表非常小,我想让用户有机会通过双击图表来最大化每个图表。因此,我尝试使用MouseDoubleClick事件 我首先使用设计器将MouseDoubleClick事件分配给TableLayoutPanel。只要表中的单元格为空,此操作就可以正常工作。一旦其中

我有一个WinForm中的TableLayoutPanel。TableLayoutPanel的单元格由自定义用户控件动态填充。每个用户控件都用于使用DevExpress图表工具显示图表。这背后的原因是将图表排列成几行,每行包含三列

现在,由于图表非常小,我想让用户有机会通过双击图表来最大化每个图表。因此,我尝试使用MouseDoubleClick事件

我首先使用设计器将MouseDoubleClick事件分配给TableLayoutPanel。只要表中的单元格为空,此操作就可以正常工作。一旦其中有UserControl,事件就不再被激发/捕获

我试图通过定义mousedoubleclick事件,将事件设置为设计器视图中的整个UserControl。但它不会再次被捕获:

我做错了什么?

为实际双击的控件触发MouseDoubleClick事件

如果您试图双击某个UserControl,则将触发事件的是UserControl

编辑:

由于UserControl上的图表控件有DockStyle属性要填充,因此实际上双击的是图表控件,因为UserControl根本不可见

您可以做的是将事件转发给您的UserControl的父控件:

YouUserControl.cs:

    private void chartControl_DoubleClick(object sender, EventArgs e)
    {
        this.OnDoubleClick(EventArgs.Empty);
    }
注:
实际上,创建一个仅包含一个DockStyle.Fill控件的UserControl有点奇怪。什么没有直接在TableLayoutPanel上使用图表控件?如果这是因为您的UserControl中有其他方法/属性,您可能希望从未密封的图表控件继承UserControl。

但UserControl事件从未触发…我设置了一个断点来检查…@Alexanderadrowitz您是否单击了UserControl。。。或者在图表控件上放入UserControl?我有两个类:Form1和UserControl。我有我的TableLayout面板,并通过以下方式添加UserControl:for int I=0;i<4:i++{UserControl ctrl=new UserControl;ctrl.Dock=DockStyle.Fill;tableLayoutPanel1.Controls.Addctrl,0,i;}然后单击显示的控件,但什么都没有发生……啊,现在我明白你的意思了!我确实单击了图表而不是UserControl,并且没有将事件设置为图表。现在一切都好了!!谢谢lot@AlexanderAdrowitzer如果一切正常,你可能会想知道,这样其他人就会知道你的问题已经解决了。