簡體   English   中英

System.NullReferenceException處理

[英]System.NullReferenceException Handled

這是我為基於事件的簡單加法器編寫的代碼,這是我不斷得到的錯誤:對象引用未設置為對象的實例。

我是一個初學者,所以我在這里出錯了嗎? 我想念什么? 謝謝。

private void txtTwo_TextChanged(object sender, TextChangedEventArgs e)
{
            int numberOne, numberTwo, number3;
            if (int.TryParse(txtOne.Text, out numberOne))
            {
                // DO NOTHING
            }
            else
            {
                MessageBoxButton buttons = MessageBoxButton.OK;
                MessageBoxImage icon = MessageBoxImage.Error;
                MessageBox.Show("Not An Integer! Only Integers Allowed !", "Error : First Number", buttons, icon);
                txtOne.Clear();
            }
            if (int.TryParse(txtTwo.Text, out numberTwo))
            {
                //DO NOTHING
            }
            else
            {
                MessageBoxButton buttons2 = MessageBoxButton.OK;
                MessageBoxImage icon2 = MessageBoxImage.Error;
                MessageBox.Show("Not An Integer! Only Integers Allowed !", "Error : Second Number", buttons2, icon2);
                txtTwo.Clear();
            }

            number3 = numberOne + numberTwo;
            string num3 = number3.ToString();
            txtOut.Text = num3;
}

在這種情況下,必須將txtOut為null,因為num3已初始化。 嘗試在設計器中重命名txtOut控件,或者刪除並重新創建它。

所以終於明白了。

好吧,num3不能為null,因為它是一個值類型,這意味着txt3為null。 txtOut為null,因為在XAML中設置txtTwo的Text屬性時會引發TextChanged事件,這很可能在創建txtOut TextBox之前發生。

因此解決方案是從XAML中刪除TextChanged事件,並將其放在InitializeComponent之后的構造函數中:

public MainWindow() {
    InitializeComponent();
    txtTwo.TextChanged += txtTwo_TextChanged;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM