0

我在VS 2010Windows 窗体控件中工作。

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

我的问题是MouseDownEventhandlerforflowlayout planel仅在单击按钮以外的任何位置时执行。 When clicked on button the MouseDownEventHandler for the FlowLayoutPanel is not called.

我尝试将函数连接到添加到面板的按钮的 Click 事件处理程序。但我注意到延迟,因此我在工作中遇到了问题。

谁能帮我这个?

4

1 回答 1

0

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

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

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

于 2013-05-14T09:18:19.253 回答