我创建了一个事件并在Form
上处理它用户控制代码:
public event EventHandler ButtonClick;
private void button1_Click(object sender, EventArgs e)
{
if (this.ButtonClick != null)
this.ButtonClick(sender, e);
}
表格代码:
private Usercontrol1 sampleUserControl = new Usercontrol1();
public Form1()
{
InitializeComponent();
sampleUserControl.ButtonClick += new EventHandler(this.UserControl_ButtonClick);
}
private void UserControl_ButtonClick(object sender, EventArgs e)
{
//sample event stuff
this.Close();
Form2 F2 = new Form2();
F2.Show();
}
但事件没有解雇。一定是什么问题?
答案 0 :(得分:2)
private Usercontrol1 sampleUserControl = new Usercontrol1();
您点击的确切按钮并不是非常明显,但不会成为该用户控件上的按钮。您从未将其添加到窗体的Controls集合中,因此它不可见。修正:
public Form1()
{
InitializeComponent();
this.Controls.Add(sampleUserControl);
sampleUserControl.BringToFront();
sampleUserControl.ButtonClick += new EventHandler(this.UserControl_ButtonClick);
}
在某些情况下,您现在在表单上有两个这些用户控件。您之前在表单上删除的一个,可能名为“Usercontrol11”。你在代码中添加的那个。无论是使用设计师还是编写代码,两种方式都会造成这种麻烦。
答案 1 :(得分:1)
我已经接受了您的代码并对其进行了编译,并且事件直接触发了,所以我的答案是您在ButtonClick
方法中创建并触发的button1_Click isn't
事件,因为该方法被调用由于某种原因没有点击按钮的事件。
请检查方法是否已被调用,并且在调用方法ButtonClick
时已注册事件button1_Click
。如果未调用该方法,则表示您尚未注册button1_Click
方法。否则,您可能已经注册了其他项目
答案 2 :(得分:0)
public Form1()
{
InitializeComponent();
this.Usercontrol11.ButtonClickEvent += new EventHandler(UserControl_ButtonClick);
}
private void UserControl_ButtonClick(object sender, EventArgs e)
{
//sample event stuff
this.Close();
Form2 F2 = new Form2();
F2.Show();
}
Usercontrol1是usercontrol的名称。因此,当我将usercontrol1添加到表单时,我给出了名称Usercontrol11