应用程序在textbox_Leave()上的自动填充功能中返回错误;使用c#

时间:2014-01-24 22:57:24

标签: c#

在我的应用程序中,我存储了公司的客户。用户将能够添加客户编号,名称,地址等。这些信息存储在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

如果有人能给我一个暗示,为什么会发生这种情况,我会很高兴。

1 个答案:

答案 0 :(得分:1)

就像@adrianbanks在评论中所说,在您发现客户编号不存在之后,您需要返回,退出,停止处理等。

要做到这一点return,请执行以下方法:

if (existingCustNo == null)
{
    MessageBox.Show("Diese Kundennummer ist nicht vorhanden!", "Kundennummer nicht vorhanden", MessageBoxButtons.OK, MessageBoxIcon.Error);
    return;
}