winform 动态生成自定义控件添加单击事件无效
privatevoidForm1_Load(objectsender,EventArgse){newButton[,]bt=newnewButton[6,6];for(i...
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[,] 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; }
}
}
} 展开
3个回答
展开全部
我试过是可以的,
在你的自定义newButton加这么一句也许更好
private void newButton_Load(object sender, EventArgs e)
{
this.BackColor = Color.Blue;
}
另外,为什么你定义newButton 要继承自UserControl而不是button?
在你的自定义newButton加这么一句也许更好
private void newButton_Load(object sender, EventArgs e)
{
this.BackColor = Color.Blue;
}
另外,为什么你定义newButton 要继承自UserControl而不是button?
追问
感谢啊,终于解决了问题
之前自定义控件时只写过书上的几个例子,没注意newButton的继承问题。
不过二维数组倒是没问题,我是用它来动态生成button。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询