对象引用未设置为对象的实例(Calculator项目错误)

时间:2013-05-09 02:02:45

标签: c#

好的,我很确定我的代码都是正确的,所以我不确定为什么我会收到此错误。 :P这是我的代码 - >

using System;
using System.Collections.Generic;
using System.Linq;
using System.Windows.Forms;

namespace Calculator
{
    static class Program
    {
        /// <summary>
        /// The main entry point for the application.
        /// </summary>
        [STAThread]
        static void Main()
        {
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            Application.Run(new Form1());  //This is where I am getting the error at
        }
    }
}

那是在我的program.cs文件中。这是我的Form1.cs文件中的内容。 - &GT;

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace Calculator
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void btn0_Click(object sender, EventArgs e)
        {
            txtbox.Text += btn0.Text;
        }

        private void btn1_Click(object sender, EventArgs e)
        {
            txtbox.Text += btn1.Text;
        }

        private void btn2_Click(object sender, EventArgs e)
        {
            txtbox.Text += btn2.Text;
        }

        private void btn3_Click(object sender, EventArgs e)
        {
            txtbox.Text += btn3.Text;
        }

        private void btn4_Click(object sender, EventArgs e)
        {
            txtbox.Text += btn4.Text;
        }

        private void btn5_Click(object sender, EventArgs e)
        {
            txtbox.Text += btn5.Text;
        }

        private void btn6_Click(object sender, EventArgs e)
        {
            txtbox.Text += btn6.Text;
        }

        private void btn7_Click(object sender, EventArgs e)
        {
            txtbox.Text += btn7.Text;
        }

        private void btn8_Click(object sender, EventArgs e)
        {
            txtbox.Text += btn8.Text;
        }

        private void btn9_Click(object sender, EventArgs e)
        {
            txtbox.Text += btn9.Text;
        }

        private void btnPoint_Click(object sender, EventArgs e)
        {
            if (txtbox.Text == "0")
            {
                txtbox.Text = "0.";
            }
            else
            {
                txtbox.Text += btnPoint.Text;
            }
        }

        private void btnPlus_Click(object sender, EventArgs e)
        {
            //Add plus code here
        }

        private void btnMinus_Click(object sender, EventArgs e)
        {
            //Add minus code here
        }

        private void btnTimes_Click(object sender, EventArgs e)
        {
            //Add times code here
        }

        private void btnDivide_Click(object sender, EventArgs e)
        {
            //Add divide code here
        }

        private void btnEqual_Click(object sender, EventArgs e)
        {
            //Add equal code here
        }

        private void btnClear_Click(object sender, EventArgs e)
        {
            txtbox.Clear();
        }
    }
}

当我尝试输入数字然后输入小数时,会发生错误。例如,我按“2”然后按“。”。发生的是错误“对象引用未设置为对象的实例”。弹出。非常感谢帮助,谢谢。对不起,如果这是一个愚蠢的错误。 :P

1 个答案:

答案 0 :(得分:0)

在您对问题的评论中已经给出了一些有用的想法,因此我将尝试汇总这里最受欢迎的分析路线并添加我自己的评论:

首先,发生异常的行(Application.Run(new Form1());)不是查找错误的真实位置。 Application.Run是一个WinForm基础结构方法,它可以完成一些魔术,然后运行你的代码。

其次,追踪问题所在的最佳方法是在btnPoint_Click方法中设置断点。我假设你是WinForm和Visual Studio的新手,所以我的建议是在youtube上搜索“Winform Debug” - 有很多视频展示了如何做到这一点。基本上这个想法是用你想要闯入的行的左侧单击鼠标(或者如果它是方法声明,则在下面一行),然后按F5在Visual Studio中运行应用程序。这将使Visual Studio能够自动附加到WinForm进程,并让您在运行时查看变量。 这将允许您逐行继续(单击F10)并导航到发生异常的代码中的确切位置。

最后,因为点击“。”会发生这种情况。按钮,唯一可以导致此类异常的两个变量是 txtbox btnPoint ,如果其中一个为null,那就是它。 如果在调试期间将鼠标悬停在varibale名称上(按照上面的说明),您应该看到变量的内容是否为null(null将只是说'null')。