2009-09-22 26 views
0

如何可以调用一个变量(私有标签CCC;)调用varialble在另一个事件:从另一事件

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; 
    } 


} 

我不能叫this.ccc.Text = lblCont.Text;在 “公共无效btnSubmit_Clic K”

它(对象引用不设置为一个对象的一个​​实例。)

Thakns !!

回答

0

在尝试修改.Text属性之前,必须为您的ccc标签字段指定一个值。由于ccc没有指向任何东西,你会得到这个异常。

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

0

除了尼克的回答是:

的DropDownList1_SelectedIndexChanged事件不能保证火在每个回发 - 如果用户提交页面不会更改选择,this.ccc将是无效的。即使这个.cc文件在之前的回发中被分配,如果下拉列表选择没有改变,它也不会在当前版本中。

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