我在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%不透明
答案 0 :(得分:1)
今天我意识到只是为一个控件注册click事件不会使任何事件工作,除非它的父控件(在我的情况下是它的形式)仍然有效。
父控件将比其子控件更早地接收事件通知。这是一个简单而明显的观察,但如果不注意会产生不良影响。
这就是我犯的错误,我在表单激活事件上激活了另一个表单,因此其中的任何控件都没有收到鼠标点击等事件。
谈论'悬停效果正在起作用',然后是的,即使表单处于非活动状态,悬停也会起作用。
所以我刚刚删除了使另一个表单处于活动状态的代码行,现在一切正常。
private void Form1_Activated(object sender, EventArgs e)
{
//if (form2!=null) form2.BringToFront(); //commented this
}