C# 需要帮助理解我';我越来越

C# 需要帮助理解我';我越来越,c#,asp.net,C#,Asp.net,请帮助我了解我遇到的错误是什么: lblTabCounter是在aspx页面中编码的标签,而lblc[index]是在页面加载期间运行时创建的标签集合 页面加载之外的声明: Label[] lblc = new Label[10]; 内部页面加载事件: for (int i = 0; i < 10; i++) { lblc[i] = new Label() { Text = (i + 1).ToString() }

请帮助我了解我遇到的错误是什么:

lblTabCounter是在aspx页面中编码的标签,而lblc[index]是在页面加载期间运行时创建的标签集合

页面加载之外的声明:

Label[] lblc = new Label[10];
内部页面加载事件:

for (int i = 0; i < 10; i++)
                {
                    lblc[i] = new Label() { Text = (i + 1).ToString() };
                    this.Controls.Add(lblc[i]);
                }
for(int i=0;i<10;i++)
{
lblc[i]=newlabel(){Text=(i+1).ToString()};
本.Controls.Add(lblc[i]);
}
在另一个名为NodeChanged的事件中:

int TabCount = Convert.ToInt32(lblTabCounter.Text.ToString());
                int TabIndex = Convert.ToInt32(lblTabCounterIndex.Text.ToString());
                if(TabCount <= 10)
                {
                    divcont.Visible = true;
                    string tabName = getURLName(uRL);

                    MenuItem myItem = new MenuItem(tabName, TabIndex.ToString());
                    Menu1.Items.AddAt(TabIndex, myItem);
                    //f1.Attributes["src"] = url;
                    f1.Attributes.Add("src", lblURL.Text.ToString());
                    MultiView1.ActiveViewIndex = TabIndex;
                    lblc[TabCount].Text = lblTabCounter.Text;
                    lblc[TabCount + 1].Text = lblURL.Text;
                    TabCount++;
                    TabIndex++;
                    lblTabCounter.Text = TabCount.ToString();
                    lblTabCounterIndex.Text = TabIndex.ToString();
                    tvPermissions.ExpandAll();
                    //tvPermissions.CollapseAll();
                    int i = ctr;
                }
int-TabCount=Convert.ToInt32(lblTabCounter.Text.ToString());
int TabIndex=Convert.ToInt32(lblTabCounterIndex.Text.ToString());

如果(TabCount该行代码可能存在两个问题:

  • lblc[TabCount]
    为空
  • lblTabCount
    为空

由于您在调试器中被暂停,您可以看到哪种情况是这样,然后查看代码的其余部分以找出原因。

问题是您的网页正在刷新并丢失标签的状态

    Label[] lblc = new Label[10];
    protected void Page_Load(object sender, EventArgs e)
    {
        for (int i = 0; i < 10; i++)
        {
            lblc[i] = new Label();
            this.Controls.Add(lblc[i]);
            if (Session["lblc" + i.ToString()] == null)
                Session["lblc" + i.ToString()] = lblc[i].Text = (i + 1).ToString();
            else
                lblc[i].Text = (string)Session["lblc" + i.ToString()];
        }
但是,由于您的单击事件正在刷新页面,因此它将与lblc失去联系,因此您只能将会话设置为在刷新时,您将看到新标签。(当页面被事件刷新时)

由于您的特定事件,页面正在刷新过程中,因此标签将消失,但会话状态将保持不变。当您在刷新时设置会话时,代码将捕获会话,而不是将其设置为默认编号。 您实际上是使用设置的会话字符串生成新标签,而不是在刷新标签时更改标签的文本

还要确保您的Web.config文件中的
位于

请在此处阅读有关会话状态的更多信息

我将按照lblc[index]数组的路径来确定元素偏移量是否在范围内,以及是否正确创建了元素偏移量,是否以null结束(null是对象lblc[index]还是文本属性)正在被引用。

我认为如果您发布该方法,我们将能够提供更多帮助。这是一个非常常见的错误,很多事情都可能导致它。我猜,只要看一下代码,
lblc[TabCount]
没有初始化(
新标签
)好的,我会更新我的帖子。@passionateCoder请检查我的帖子,我真的更新了。嘿,你回来了,这与你现在提供的代码完全相关。我们可以通过聊天继续吗?我有很多问题,希望你能帮我。你提供的代码我放在for(int I=0;I<10;I++){lblc[I]=new Label(){Text=(i+1).ToString()};}在我声明Label[]lblc=new Label[10]时在页面加载中;在它之外。尝试将TabCount替换为数字0,看看它是否给您带来错误,然后将TabCount替换为数字9,看看它是否给您带来错误。当然我可以聊天。在我刚刚加入c#聊天室之前,我从未使用过聊天功能。
        lblc[4].Text = "cool";
        Session["lblc4"] = "cool";
        Session["lblc4"] = "cool";