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

本文关键字:计算器 项目 错误 实例 设置 对象 对象引用 | 更新日期: 2023-09-27 18:12:40

好的,我很确定我的代码都是正确的,所以我不确定为什么我得到这个错误。: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文件中。这是我的form。cs文件。——>

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

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

在你的问题的评论中给了你一些有用的想法,所以我将尝试在这里汇总什么是最受欢迎的分析路线,并添加我自己的评论:

首先,发生异常的行(Application.Run(new Form1());)不是查找错误的真正位置。应用程序。Run是一个WinForm基础设施方法,它会做一些神奇的事情,然后运行你的代码。

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

最后,因为这发生在点击'。'按钮,只有两个变量可以导致这种类型的异常是txtboxbtnPoint,如果其中一个是空的-那就是它。如果在调试期间将鼠标悬停在变量名上(按照上面的说明),您应该看到变量的内容是否为null (null将简单地表示'null')。