表单中的Usercontrol句柄未激发
本文关键字:句柄 Usercontrol 表单 | 更新日期: 2023-09-27 18:21:34
我创建一个事件并在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();
}
但是该事件不触发。一定是什么问题?
private Usercontrol1 sampleUserControl = new Usercontrol1();
您单击的按钮并不十分明显,但它不会是该用户控件上的按钮。您从未将它添加到窗体的Controls集合中,因此它不可见。修复:
public Form1()
{
InitializeComponent();
this.Controls.Add(sampleUserControl);
sampleUserControl.BringToFront();
sampleUserControl.ButtonClick += new EventHandler(this.UserControl_ButtonClick);
}
有一些可能性,你现在在表单上有两个这样的用户控件。一个是你以前放在表单上的,可能名为"Usercontrol11"。还有你在代码中添加的那个。要么使用设计器,要么编写代码,这两种方法都会导致这种麻烦。
我已经获取了您的代码并对其进行了编译,事件立即启动,所以我的答案是,您在方法button1_Click isn't
中创建并启动的ButtonClick
事件被调用,因为该方法由于某种原因没有连接到单击按钮的事件。
请检查方法是否已调用,以及在调用方法button1_Click
的那一刻事件ButtonClick
是否已注册。如果未调用该方法,则表示您尚未注册button1_Click
方法。否则,您可能已经注册到其他项目
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是用户控制的名称。因此,当我将usercontrol1添加到表单中时,我会将其命名为Usercontrol11