我有一个方法名称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!!!");
}
}
}
请帮我解决这个问题。
答案 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!!!");
}