gpt4 book ai didi

c# - 单击事件后按钮数组消失

转载 作者:太空宇宙 更新时间:2023-11-03 18:39:08 25 4
gpt4 key购买 nike

为什么我的按钮(按钮阵列)在我点击其中任何一个后消失了?这是代码结构。非常感谢。

public partial class Seatalloc2 : System.Web.UI.UserControl
{
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
PopulateControls();
}

}

protected void PopulateControls()
{

Button[,] buttonArray = new Button[10, 14];
for (int a = 0; a < 10; a++)
for (int b = 0; b < 14; b++)
{
buttonArray[a, b] = new Button();
Panel2.Controls.Add(buttonArray[a, b]);
}

}

public void buttonHandler(object sender, EventArgs e)
{
Button btn = sender as Button;
btn.BackColor = Color.Red;
}
}

最佳答案

如果您查看我对上一个问题的回答,您会发现一个解决此问题的示例:

https://stackoverflow.com/a/11061782/1268570

根本问题是理解 ASP.Net 页面生命周期(我讨厌它),但理解它背后的基础知识是有用且至关重要的

Microsoft 的这份文档详细解释了页面生命周期

http://msdn.microsoft.com/en-us/library/ms178472.aspx

基本上控件会消失,因为您需要在每次回发时在页面中重新创建它们,而在您的代码中,您只是在第一次加载页面时创建它们

创建动态控件的推荐事件是PreInit(如果您没有母版页)或Init(如果您有一个母版页)

因此,如果您将代码更改为:

void Page_Init(object sender, EventArgs e)
{
PopulateControls();
}

您的按钮将保存它们的状态。不要担心状态,即使它们在每个帖子中重新创建,因为您是在 Init 事件中进行的,ASP.Net 将自动加载 ViewState到您的控件(这是可能的,因为 ASP.Net 在 Init 事件之后和 Load 事件之前加载 View 状态)

作为快速引用,请查看页面生命周期:

enter image description here

关于c# - 单击事件后按钮数组消失,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11061754/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com