好的,我很确定我的代码都是正确的,所以我不确定为什么我会收到此错误。 :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
答案 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')。