如题,我想从数据库中取出来的数据,动态添加一个按钮放到界面上显示出来并触发事件,应该怎么做,各位大侠帮帮忙

解决方案 »

  1.   

    动态添加按钮可用类似以下代码,只要你的自定义控件是容器类的,就没有问题:pqCompon.InterfaceCompon myItfcCpn;
    myItfcCpn = new pqCompon.InterfaceCompon();
    myItfcCpn.Parent = DesignPanel;
    myItfcCpn.Name = m_objSvcList.Obj.appServices[i].id;
    myItfcCpn.Left = x;
    myItfcCpn.Top = y;
    myItfcCpn.Click += InterfaceCpnClick;pqCompon.InterfaceCompon 类是我自定义的一个控件,你可以换成Button类型,
    最后一句myItfcCpn.Click += InterfaceCpnClick;是给控件添加代码,InterfaceCpnClick是一个标准事件响应函数的函数名,比如响应click事件函数InterfaceCpnClick的定义如下        /// <summary>
            /// 功能:接口控件点击事件处理函数
            /// </summary>
            private void InterfaceCpnClick(object sender, EventArgs e)
            {
                ......
            }
      

  2.   

    通过代理实现事件
    http://www.cnblogs.com/dawei362/articles/1268771.html
      

  3.   

    我是在自定义控件中添加的,他提示说无法添加子控件
    ------------------------------------------
    你的自定义控件从什么继承?打开this.SetStyle(ControlStyles.ContainerControl, true);了没?
      

  4.   

    System.Web.UI.UserControl从这个继承,this.SetStyle(ControlStyles.ContainerControl, true);?这是什么,System.Web.UI.UserControl中没有SetStyle这个方法
      

  5.   

    System.Web.UI.LiteralControl”不允许使用子控件。 它提示这个错
      

  6.   

    可以实现,给你打一个比方。在库中有一个表,表里只有二个字段叫LbName,LbText;有10个值。我们现在用这个十个值生成十个LABEL,加入到Panel2中,同时生成LABEL的事件。。代码如下:for (int i = 0; i < KjTable.Rows.Count; i++)
                {
                    Label Lb = new Label();
                    Lb.Name = KjTable.Rows[i]["LbName"].ToString();
                    Lb.Text = KjTable.Rows[i]["LbText"].ToString();
                    Lb.BackColor = System.Drawing.Color.Transparent;    
                    Lb.AutoSize = true;
                    System.Drawing.Point p = new Point(12 + i * 30, 13 + i * 30);                
                    Lb.Location = p;
                    panel2.Controls.Add(Lb);                Lb.MouseMove += new System.Windows.Forms.MouseEventHandler(this.Lb_MouseMove);
                    Lb.MouseDown += new System.Windows.Forms.MouseEventHandler(this.Lb_MouseDown);
                    Lb.MouseUp += new System.Windows.Forms.MouseEventHandler(this.Lb_MouseUp);
                }
    这个明白了吧,不明白加我QQ:51255777。