从另一个事件调用变量

时间:2009-09-22 01:40:24

标签: c# variables

如何在另一个事件中调用变量( private Label ccc; ):

private Label ccc;

    protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e)
    {

        Label Label1 = FindControlRecursive(Page, DropDownList1.SelectedValue) as Label;
        if (Label1 != null)
            this.ccc = lblCont;
            this.ccc.Text = Label1.Text;
    }


 public void btnSubmit_Click(object sender, EventArgs e)
    {
        try
        {


          this.ccc.Text = lblCont.Text;


            int bbb = Convert.ToInt32(lblCont.Text) - Convert.ToInt32(tbEnter.Text);
            if (bbb >= 0)
            {
                lblCont.Text = Convert.ToString(bbb);

            }
            else
            {
                ErrorDisplay.Text = "There are not enough tickets";
            }
        }
    catch (Exception ex)
    {
        ErrorDisplay.Text = ex.Message;
    }


}

我无法在“ public void btnSubmit_Clic k”中调用 this.ccc.Text = lblCont.Text;

它确实(对象引用未设置为对象的实例。)

Thakns !!

2 个答案:

答案 0 :(得分:0)

在尝试修改.Text属性之前,必须为ccc Label字段指定值。因为ccc没有指向你的异常。

确保在调用btnSubmit_Click函数之前,为ccc字段分配了一个Label对象,或者在函数内部执行任何操作之前分配它。

答案 1 :(得分:0)

除了尼克的回答:

不保证每次回发都会触发DropDownList1_SelectedIndexChanged事件 - 如果用户在不更改选择的情况下提交页面,则此.ccc将为null。即使this.ccc是在之前的回发中分配的,如果下拉列表选择没有改变,它也不会在当前的回发中。

因此,您需要确保在其他地方为其分配Label实例。例如,在Page_Load中,甚至在 this.ccc.Text = lblCont.Text; 行之前的btnSubmit_Click中。