如何在c#中使用Normal方法调用按钮单击事件?

时间:2016-05-26 05:35:21

标签: c#

我有一个方法名称loadTest123()。我试图从loadTest123()调用Button1_Click事件。但事件没有发生。我试图在Button1_Click事件中使用断点进行调试但不触发。

E.g:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Xml.Linq;

namespace Test
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            loadTest123();
        }

        public Button Coke = new Button();

        public void loadTest123()
        {
            Coke.Click += new EventHandler(button1_Click);
        }

        private void button1_Click(object sender, EventArgs e)
        {
             MessageBox.Show("Hello!!!");      
        }        
    }
}

请帮我解决这个问题。

3 个答案:

答案 0 :(得分:2)

你所做的只是事件的绑定,你还没有调用它。 你必须调用该事件来实际运行它。

这样做,

button1.PerformClick();

OR,

button1_Click(null, new EventArgs());

在你的方法中。

答案 1 :(得分:1)

loadTest123()方法中的内容是订阅某个事件,在您对其执行点击之前,它不会触发订阅的方法。

此外,您已将button1_Click附加到Click事件,但没有声明名称的方法。你需要这样的东西。

   private void button1_Click(object sender, EventArgs e)
   {
         MessageBox.Show("Hello!!!");      
   }        

如果您希望以编程方式单击 ,则按钮上有PerfromClick方法,您可以使用它。

Coke.PerformClick();

您创建了按钮但未添加到控件中,这是故意的吗?

答案 2 :(得分:0)

见下面的代码和评论

public Form1()
{
    InitializeComponent();
    loadTest123();
}

public Button Coke = new Button();

public void loadTest123()
{
    // BELOW LINE IS ONLY FOR REGISTER YOUR BUTTON'S CLICK EVENT
    Coke.Click += new EventHandler(button1_Click);

    // FIRE YOUR EVENT IN CODE BEHIND
    Coke.PerformClick();
    // OR
    button1_Click(null, new EventArgs());
}

private void button1_Click(object sender, EventArgs e)
{
     MessageBox.Show("Hello!!!");      
}