winform 动态生成自定义控件添加单击事件无效

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了winform 动态生成自定义控件添加单击事件无效相关的知识,希望对你有一定的参考价值。

private void Form1_Load(object sender, EventArgs e)

newButton[,] bt = new newButton[6, 6];
for (int i = 0; i < 6; i++)

for (int j = 0; j < 6; j++)

bt[i, j] = new newButton();
bt[i, j].Width = 50;
bt[i, j].Height = 50;
bt[i, j].Top = i * 50;
bt[i, j].Left = j * 50;
this.Controls.Add(bt[i, j]);
bt[i, j].Click += new EventHandler(Button_Click);



private void Button_Click(object sender,EventArgs e)

MessageBox.Show("aaaa");

说明:自定义了一个button控件,仅仅只是在button控件的基础上添加了一个可读可写的属性,新生成的控件取名为newButton。但是下面这个代码无效,
bt[i, j].Click += new EventHandler(Button_Click);
如果将newButton换成button的话这个代码就是有效的,
蛋疼了半天,求高手讲解下原因,或指定一下方向。
自定义控件,仅仅加了个isMine
namespace MyButton

public partial class newButton : UserControl

public newButton()

InitializeComponent();

private void UserControl1_Load(object sender, EventArgs e)


private int isMine=0;
public int IsMine

get return isMine;
set isMine = value;


我试过是可以的,
在你的自定义newButton加这么一句也许更好
private void newButton_Load(object sender, EventArgs e)

this.BackColor = Color.Blue;

另外,为什么你定义newButton 要继承自UserControl而不是button?追问

感谢啊,终于解决了问题
之前自定义控件时只写过书上的几个例子,没注意newButton的继承问题。
不过二维数组倒是没问题,我是用它来动态生成button。

参考技术A 有一个错误,动态添加控件,需要指定控件的Name属性,不能重复。 参考技术B 你的newButton的定义,可以发出来看看追问

定义已发

以上是关于winform 动态生成自定义控件添加单击事件无效的主要内容,如果未能解决你的问题,请参考以下文章

C# WinForm 自定义控件如何实现动态添加子控件

WPF C# 如何在动态添加的grid控件中添加某个网格中的image控件的单击事件?

winform动态添加控件显示排列 选中一个分类后,在panel控件中动态添加图片和文字,跟桌面上的图标一样。

winform DataGridView 动态添加一列控件(自定义控件)

ASP.NET用户自定义控件

请教关于WPF上自定义控件添加事件的问题