本帖最后由 TrueYi 于 2015-02-08 22:22:56 编辑

解决方案 »

  1.   

    没看到mybutton存在的意义,为什么要在button外面套一层mybutton呢?
      

  2.   


    var ei = typeof(Button).GetEvent("Click");
    var d = Delegate.CreateDelegate(typeof(EventHandler), this, item.ClickEvent);
    ei.AddEventHandler(btn, d);
      

  3.   

    为什么不直接用EventHandler delegate呢?看不到用字符串的优点(字符串的好处是可以存数据库,但由于你用是函数名字,函数名字存储在外面,有泄露内部实现细节的嫌疑)。    public class MyButton
        {
            public MyButton(string text, string name, EventHandler clickEvent)
            {
                Text = text;
                Name = name;
                ClickEvent = clickEvent;
            }
            public string Text { get; set; }
            public string Name { get; set; }
            public EventHandler ClickEvent { get; set; }
        }var Items = new List<MyButton>()
    {
                    new MyButton("新增","tbtnAdd",btnAdd_Click),
                    new MyButton("修改","tbtnModify",btnModify_Click),
                    new MyButton("删除","tbtnDelete",btnDelete_Click)                
     };
     
                foreach (var item in items)
                {
                    var btn = new Button();
                    btn.Text = item.Text;
                    btn.Name = item.Name;
                    btn.Click += itemm.ClickEvent; //
                }
      

  4.   

    都绑定同一个函数不好吗?
    然后在函数里判断sender(触发事件的对象),强制转换回BUTTON,再根据不同的TEXT,show不同的内容