处理System.NullReferenceException

时间:2013-05-01 09:54:00

标签: c# .net nullreferenceexception

这是我为简单的基于事件的加法器编写的代码,这是我不断得到的错误:对象引用未设置为对象的实例。

我是初学者,所以我的错误是什么?我错过了什么?感谢。

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

2 个答案:

答案 0 :(得分:3)

在这种情况下,它必须为txtOut为null,因为num3已初始化。尝试在设计器中重命名txtOut控件或删除并重新创建它。

答案 1 :(得分:0)

所以终于搞定了。

好吧,num3不能为null,因为它是一个值类型,这意味着txt3为null。 txtOut为null,因为在XAML中设置txtTwo的Text属性时会引发TextChanged事件,这可能在创建txtOut TextBox之前发生。

所以解决方案是从XAML中删除TextChanged事件并将其放在构造函数中,在InitializeComponent之后:

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