单击子控件时调用FlowLayoutPanel Mousedown处理程序

时间:2013-05-14 08:10:56

标签: c# winforms flowlayoutpanel

我正在使用VS 2010,Windows窗体控件。

我有一个扩展的FlowLayoutPanel,我在其中动态添加按钮

我的问题是MouseDownEventhandler的{​​{1}}仅在按钮之外的任何地方点击时执行。 flowlayout planel

我尝试将功能连接到添加到Panel的按钮的Click事件处理程序。 但是我注意到因为我在提前工作时遇到了延误。

任何人都可以帮我吗?

1 个答案:

答案 0 :(得分:0)

这可能不是最好的approch,但它对我有用:

//global mouse down handler for controls in flow panel
private void ControlMouseDown(object sender, MouseEventArgs e)
{
    var control = (Control)sender;

    if (control.Parent is FlowLayoutPanel)
    {
        flowLayoutPanel1_MouseDown(sender, e); //if you have seperate method to handle click on flowpanel otherwise see reflection approach below
    }
}

反思方法:

var onMouseDown = flowLayoutPanel1.GetType().GetMethod("OnMouseDown", System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Instance);
onMouseDown.Invoke(flowLayoutPanel1, new object[] { e });

您可以轻松地将全局事件绑定到流面板中的所有子控件,这对我来说很有用。希望我能帮助:)。