Button的生成其实不难,麻烦的是它的事件,我看了好多反编译的代码,还有网上很多人的代码,跟我想的都不一样,到现在对控件的事件执行和回发还有比较模糊,以后有时间需要好好研究下,只可惜没有好的书,只能研究好代码。
言归正传,网上的控件生成有个弊端就是所有事件都是通过复合控件的事件属性的形式实现的,所以无法动态的增加Button这类控件,但是如果是一个固定的组合控件这样做也挺好。我的代码很简单,但是也花了我不少时间探索,主要是类似的资料太少,实现的也不完美,多的不说了直接看代码吧,很简单(T。T);
public class testControl : CompositeControl
{
void bt_Click(object sender, EventArgs e)
{
EventHandler handler = (EventHandler)this.Events[sender];
if (handler != null)
{
handler(this, EventArgs.Empty);
}
}
public void AddButton(string text, EventHandler e)
{
Button bt = new Button();
bt.Click +=new EventHandler(bt_Click);
this.Events.AddHandler(bt, e);
Controls.Add(bt);
}
}