0

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

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

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

2 回答 2

3

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

于 2013-05-01T10:06:00.040 回答
0

所以终于想通了。

嗯,num3 不能为空,因为它是一个值类型,这意味着 txt3 为空。txtOut 为空,因为在 XAML 中设置 txtTwo 的 Text 属性时引发了 TextChanged 事件,这可能发生在创建 txtOut 文本框之前。

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

public MainWindow() {
    InitializeComponent();
    txtTwo.TextChanged += txtTwo_TextChanged;
}
于 2013-05-01T11:20:53.970 回答