点击事件无法动态添加按钮或面板

时间:2016-06-14 06:08:07

标签: c# winforms dynamic onclick controls

我在C#中使用以下代码添加Button

Button TextLabel = new Button(); //local variable
TextLabel.Location = new Point(0, 0);
TextLabel.Visible = true;
TextLabel.Enabled = true;
TextLabel.AutoSize = true;
TextLabel.Click += click;
this.Controls.Add(TextLabel);

它的点击处理程序是

protected void click(object o, EventArgs e)
{
   MessageBox.Show("hello");
}

虽然按钮可见并且响应鼠标悬停,但其点击没有发生任何事情。什么可能是错的或遗失? 如果我在一个独立的项目中编写相同的代码,它可以工作!!!!!奇怪。但为什么????

表格属性:(如果需要)
1.在任务栏中显示:false
2.无边界的 3. 50%不透明

1 个答案:

答案 0 :(得分:1)

今天我意识到只是为一个控件注册click事件不会使任何事件工作,除非它的父控件(在我的情况下是它的形式)仍然有效。

父控件将比其子控件更早地接收事件通知。这是一个简单而明显的观察,但如果不注意会产生不良影响。

这就是我犯的错误,我在表单激活事件上激活了另一个表单,因此其中的任何控件都没有收到鼠标点击等事件。

谈论'悬停效果正在起作用',然后是的,即使表单处于非活动状态,悬停也会起作用。

所以我刚刚删除了使另一个表单处于活动状态的代码行,现在一切正常。

private void Form1_Activated(object sender, EventArgs e)
{
    //if (form2!=null) form2.BringToFront(); //commented this
}