C#动态添加一个button控件和对应的事件 ,但事件不响应,怎样才能让它响应。

C#动态添加一个button控件和对应的事件 ,但事件不响应,怎样才能让它响应。,第1张

1)在窗体Form1上布置一个Label

2)Form1的后台代码

using System

using System.Drawing

using System.Windows.Forms

namespace WindowsFormsApplication5

{

    public partial class Form1 : Form

    {

        Button btn

        public Form1()

        {

            InitializeComponent()

            // 动态添加按钮

            btn = new Button()

            btn.Text = "点击我"

            btn.Click += Btn_Click

            this.Controls.Add(btn)

            btn.Location = new Point(10, 10)

        }

        

        // 点击按钮事件处理

        private void Btn_Click(object sender, EventArgs e)

        {

            label1.Text = "新的标签内容"

        }

    }

}

你要知道服务器控件的button点击之后是先刷新页面再执行事件代码的,所以你现在就是第一次显示了btn1然后点击btn1之后生成了btn2再点击btn2时候页面就先刷新了又一次执行了pageload事件所以btn2的事件没有执行。

那么你可以换种方法来做

  LinkButton btn2 = new LinkButton()

        protected void Page_Load(object sender, EventArgs e)

        {

                LinkButton btn1 = new LinkButton()

                btn1.Text = "111111111111111111111111"

                btn1.Click += lb_Click1

                panel1.Controls.Add(btn1)

                btn2.Text = "22222222222222222222222222"

                btn2.Click += new EventHandler(lb_Click2)

                btn2.Visible = false

                panel2.Controls.Add(btn2)

        }

        void lb_Click1(object sender, EventArgs e)

        {

            btn2.Visible = true

        }

        void lb_Click2(object sender, EventArgs e)

        {

            Response.Write("<script>alert('Btn2 clicked')</script>")

        }

再就是一般这种 *** 作最好别从后台往前台输出控件,js来做还是很方便的


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/bake/11720402.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-18
下一篇 2023-05-18

发表评论

登录后才能评论

评论列表(0条)

保存