作为标题,我是我的代码的一部分,我想调用已添加到Button.Click处理程序的任何方法。
我该怎么做?
答案 0 :(得分:7)
您是否需要从代码中的其他位置访问它?将该部分重构为它自己的方法然后在需要访问它时调用该方法(包括在Click事件中)可能是一个想法
答案 1 :(得分:4)
避免的。真。好像你在事件处理程序中处理一些重要的逻辑。
将逻辑移出处理程序。
答案 2 :(得分:2)
你可以通过反思来实现..
Type t = typeof(Button);
object[] p = new object[1];
p[0] = EventArgs.Empty;
MethodInfo m = t.GetMethod("OnClick", BindingFlags.NonPublic | BindingFlags.Instance);
m.Invoke(btnYourButton, p);
答案 3 :(得分:1)
您需要一个事件作为代理,但您只需重构代码就好了。
private EventHandler ButtonClick;
protected override void CreateChildControls()
{
base.CreateChildControls();
m_Button = new Button{Text = "Do something"};
m_Button.Click += ButtonClick;
ButtonClick += button_Click;
Controls.Add(m_Button);
}
private void MakeButtonDoStuff()
{
ButtonClick.Invoke(this, new EventArgs());
}
private void button_Click(object sender, EventArgs e)
{
}
如果你真的不需要它,不要这样做。它会使你的代码混乱。