【问题标题】:dynamic button from dynamic button来自动态按钮的动态按钮
【发布时间】:2018-12-06 09:47:15
【问题描述】:

有人可以解释一下吗?我正在编写一个非常简单的 Web 表单(C# aspx),并且正在使用动态按钮。我创建了第一个按钮并向其添加了单击事件-没问题-一切正常。但是当我在我的第一个按钮的事件处理程序中创建第二个动态按钮时 - 我无法向它添加事件处理程序。我的意思是我可以 - 没有错误 - 但我永远无法达到它。

在下面的代码中 - 当我加载页面时 - 我看到一个按钮。我单击它 - 并添加了一个新按钮。我单击第二个按钮 - 它什么也没做。 (?)

protected void Page_Load(object sender, EventArgs e)
{
    // on PageLoad I create a dynamic button named b1
    Button b1 = new Button();
    b1.Text = "new 1";
    b1.Click += new EventHandler(b1_Click);
    div_data.Controls.Add(b1);
    // div_data is just a HTML div tag
}

void b1_Click(object sender, EventArgs e)
{
    // when I click dynamid button b1 - a new dynamic button b2 is created
    Button b2 = new Button();
    b2.Text = "new 2";
    b2.Click += new EventHandler(b2_Click);
    div_data.Controls.Add(b2);
}

void b2_Click(object sender, EventArgs e)
{
    //this code is never executed... why ???
}

感谢您的建议 - 如果这是一个菜鸟问题,我们很抱歉 ;-)

【问题讨论】:

  • 嗨@Michael,添加第二个按钮后,您能否在调试器中发布您的代码。
  • 为什么需要动态创建它们?以声明方式创建它们并根据需要使它们可见/不可见。

标签: c# asp.net button dynamic


【解决方案1】:

所有控件和所有其他对象都在页面生命周期结束时被释放。 这意味着您必须在回发时重新创建它们。您已经为Page_Load 中的按钮Button 这样做了,但没有使用在第一个按钮的事件处理程序中创建的按钮b2

但真正的问题是:为什么需要动态创建它们? 以声明方式创建它们(在 aspx 标记上)并根据需要使它们可见/不可见。

【讨论】:

  • 这是有道理的……至于我为什么要让它们动态化——除了“我想尝试那种方式”之外,没有别的原因。我会尝试动态控件的可见性 - 感谢您的建议 ;-)
猜你喜欢
  • 1970-01-01
  • 2017-01-12
  • 2018-05-13
  • 2018-10-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-01-11
  • 2019-05-02
相关资源
最近更新 更多