在我的应用程序中,我存储了公司的客户。用户将能够添加客户编号,名称,地址等。这些信息存储在xml文件中。在tabControl的第一个选项卡上,用户可以在文本框中键入客户编号,然后自动填写姓氏和名字。如果客户编号不可用,则会显示一个消息框。
那听起来不错。但是我遇到了Visual Studio的问题。我得到了这段代码:
private void txtKNrNew_Leave(object sender, EventArgs e)
{
XDocument xdoc = XDocument.Load(path + "\\save.xml");
int CustNos;
if (Int32.TryParse(txtKNrNew.Text, out CustNos))
{
var xmlNodeExist = "Buchhaltung/Customers/CustNo";
var existingCustNo = xdoc.XPathSelectElements(xmlNodeExist).FirstOrDefault(x => (int)x == CustNos);
if (existingCustNo == null)
{
MessageBox.Show("Diese Kundennummer ist nicht vorhanden!", "Kundennummer nicht vorhanden", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.Load(path + "\\save.xml");
var CustNoExist = String.Format("//Customers[CustNo/text() = {0}]/", CustNos);
var SurnameNode = xmlDoc.SelectNodes(CustNoExist + "Surname");
var ForenameNode = xmlDoc.SelectNodes(CustNoExist + "Forename");
string surname = SurnameNode[0].InnerText;
string forename = ForenameNode[0].InnerText;
if (CustNoExist != null)
{
txtSurnameNew.Text = surname;
txtForenameNew.Text = forename;
}
else
{
MessageBox.Show("aaaaaaaaaaa");
}
}
}
如果我输入的客户编号不存在,则会显示一个消息框,表示未定义此客户编号。但随后Visual Studio中断应用程序并返回错误:
Object reference not set to an instance of an object
如果有人能给我一个暗示,为什么会发生这种情况,我会很高兴。
答案 0 :(得分:1)
就像@adrianbanks在评论中所说,在您发现客户编号不存在之后,您需要返回,退出,停止处理等。
要做到这一点return
,请执行以下方法:
if (existingCustNo == null)
{
MessageBox.Show("Diese Kundennummer ist nicht vorhanden!", "Kundennummer nicht vorhanden", MessageBoxButtons.OK, MessageBoxIcon.Error);
return;
}