我正在使用VS 2010
,Windows窗体控件。
我有一个扩展的FlowLayoutPanel
,我在其中动态添加按钮
我的问题是MouseDownEventhandler
的{{1}}仅在按钮之外的任何地方点击时执行。
flowlayout planel
。
我尝试将功能连接到添加到Panel的按钮的Click事件处理程序。 但是我注意到因为我在提前工作时遇到了延误。
任何人都可以帮我吗?
答案 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 });
您可以轻松地将全局事件绑定到流面板中的所有子控件,这对我来说很有用。希望我能帮助:)。