2016-03-31 73 views
-3

我有以下代碼,我試圖通過幾條if語句,但我在將標籤的內容設置爲0時出現問題;無法將標籤的內容設置爲零

private void UnderRunBumper() 
{ 
    lblGVMAmount.Content = 0; //Issue here 
    if (Convert.ToInt32(txtExternalLength.Text) >= 6000) 
     lblUnderRunBumper.Content = "Under-Run Bumper"; 

    else if (Convert.ToInt32(lblGVMAmount.Content.ToString()) >= 8000) 
     lblUnderRunBumper.Content = "Under-Run Bumper"; 

    else if (cmbBodyType.SelectedIndex == 6 || cmbBodyType.SelectedIndex == 7 || cmbBodyType.SelectedIndex == 8 || cmbBodyType.SelectedIndex == 9 || cmbBodyType.SelectedIndex == 10) 
     lblUnderRunBumper.Content = "Under-Run Bumper"; 
    else lblUnderRunBumper.Content = ""; 
} 

我得到的錯誤:

Object reference not set to an instance of an object.

我不明白。爲什麼我不能將標籤的值設置爲0?

+0

你爲什麼要發佈[6小時相同質詢時(http://stackoverflow.com/questions/36337084/setting-label-content-causes-issues) – MethodMan

+0

是lblGVMAmount空當您嘗試將其內容屬性設置爲0? –

+0

@ MADsc13nce是的,它是:) – CareTaker22

回答

1

在WPF應用程序(或winforms)中,UserControl或Window使用名爲InitializeComponent的調用構建自身,該調用會自動添加到後面代碼中的構造函數中。

這個調用是初始化你的視圖,並實例化它上面的對象。在此方法完成之前,請勿嘗試觸摸UI控件。

E.g.

public partial class MyView : UserControl 
{ 
    public MyView() 
    { 
     var x = myButton; //<Button Name="myButton" /> in xaml 
          // x is null 

     InitializeComponent(); 

     x = myButton; //x is valid 

    } 
} 
+0

感謝您的答案和解釋! :D我發現了這個問題,但不知道爲什麼會發生。我在文本框的TextChanged事件中使用了'UnderRunBumper()'方法,這是由於某種原因導致我的崩潰的原因。 – CareTaker22

+1

也許在實例化標籤之前'InitializeComponent'調用期間文本被更改。只是猜測。檢查你的通話堆棧,你就會知道。這是學習寶貴的調試技巧的好機會。 – Jonesopolis

+0

我認爲你完全正確。這是唯一對我有意義的解釋。但是,謝謝你的幫助,並且不會像一些在這裏評論的窺視片那樣負面。 – CareTaker22

相關問題