如何在c#中调用(web)Button.Click?

时间:2008-11-13 09:00:09

标签: c# .net asp.net events

作为标题,我是我的代码的一部分,我想调用已添加到Button.Click处理程序的任何方法。

我该怎么做?

4 个答案:

答案 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)
    {

    }

如果你真的不需要它,不要这样做。它会使你的代码混乱。