簡體   English   中英

如何在 C# 中存儲文本框中的值

[英]How do I store values from textbox in C#

我創建了這個程序來從文本框中獲取文本並存儲在一個 xml 文件中,但它不存儲。 另外,如果我關閉表單並重新打開它並再次輸入數據,它如何更新相同的現有文件而不替換以前的數據。? 請修復我的代碼

    private void button1_Click(object sender, EventArgs e)
    {
        string name = this.txtName.Text;
        string occupation = this.txtOccupation.Text;
        string dob = this.txtDob.Text;
        string nic = this.txtNic.Text;
        double id = double.Parse(this.lblID.Text);

        XmlDocument xmlDoc = new XmlDocument();
        xmlDoc.CreateXmlDeclaration("1.0", "utf-8", "yes");

        XmlNode rootNode = xmlDoc.CreateElement("Users");
        XmlNode subNode = xmlDoc.CreateElement("Users");

        XmlAttribute nameAtt = xmlDoc.CreateAttribute("Name");
        nameAtt.Value = name;
        XmlAttribute occupationAtt = xmlDoc.CreateAttribute("Occupation");
        occupationAtt.Value = occupation;
        XmlAttribute dobAtt = xmlDoc.CreateAttribute("Date of Birth");
        dobAtt.Value = dob;
        XmlAttribute nicAtt = xmlDoc.CreateAttribute("NIC");
        nicAtt.Value = nic;
        XmlAttribute idAtt = xmlDoc.CreateAttribute("ID");
        idAtt.Value = idAtt.ToString();

        subNode.Attributes.Append(nameAtt);
        subNode.Attributes.Append(occupationAtt);
        subNode.Attributes.Append(dobAtt);
        subNode.Attributes.Append(nicAtt);
        subNode.Attributes.Append(idAtt);

        rootNode.AppendChild(subNode);
        subNode.AppendChild(rootNode);

        xmlDoc.Save("E:/Data.xml");
        Hide();
    }
}

}

這只是一個基於您提供的代碼的簡單工作示例,但可能有更好的方法來完成您要執行的操作:

private void button1_Click(object sender, EventArgs e)
{
    string name = this.txtName.Text;
    string occupation = this.txtOccupation.Text;
    string dob = this.txtDob.Text;
    string nic = this.txtNic.Text;
    double id = double.Parse(this.lblID.Text);

    // XML file path.
    string xmlPath = "E:/Data.xml";

    XmlDocument xmlDoc = new XmlDocument();

    // If specified file does not exist, create a new one.
    if (!File.Exists(xmlPath))
    {
        XmlDeclaration xmlDeclaration = xmlDoc.CreateXmlDeclaration("1.0", "UTF-8", "yes");
        XmlElement rootNode = xmlDoc.DocumentElement;
        xmlDoc.InsertAfter(xmlDeclaration, rootNode);

        XmlNode parentNode = xmlDoc.CreateElement("Users");
        XmlNode subNode = xmlDoc.CreateElement("User");

        XmlAttribute nameAtt = xmlDoc.CreateAttribute("Name");
        nameAtt.Value = name;
        XmlAttribute occupationAtt = xmlDoc.CreateAttribute("Occupation");
        occupationAtt.Value = occupation;
        XmlAttribute dobAtt = xmlDoc.CreateAttribute("Date_Of_Birth");
        dobAtt.Value = dob;
        XmlAttribute nicAtt = xmlDoc.CreateAttribute("NIC");
        nicAtt.Value = nic;
        XmlAttribute idAtt = xmlDoc.CreateAttribute("ID");
        idAtt.Value = id.ToString();

        subNode.Attributes.Append(nameAtt);
        subNode.Attributes.Append(occupationAtt);
        subNode.Attributes.Append(dobAtt);
        subNode.Attributes.Append(nicAtt);
        subNode.Attributes.Append(idAtt);

        xmlDoc.AppendChild(parentNode);
        parentNode.AppendChild(subNode);

        // Save new XML file.
        xmlDoc.Save(xmlPath);
    }
    // If specified file exists, read and update it.
    else
    {
        // Open existing XML file.
        xmlDoc.Load(xmlPath);

        // Set to true if current name is already found in the XML file,
        // of course it should be better to check the ID instead the name,
        // supposing that ID is unique.
        bool nameFound = false;

        // Get all "User" nodes and check if one of them already contains
        // the specified name.
        foreach (XmlNode user in xmlDoc.SelectNodes("Users/User"))
        {
            if (user.Attributes.GetNamedItem("Name").Value == name)
            {
                nameFound = true;
                break;
            }
        }

        // If the name is not already in the file, insert a new user
        // with that name.
        if (nameFound == false)
        {
            XmlNode subNode = xmlDoc.CreateElement("User");

            XmlAttribute nameAtt = xmlDoc.CreateAttribute("Name");
            nameAtt.Value = name;
            XmlAttribute occupationAtt = xmlDoc.CreateAttribute("Occupation");
            occupationAtt.Value = occupation;
            XmlAttribute dobAtt = xmlDoc.CreateAttribute("Date_Of_Birth");
            dobAtt.Value = dob;
            XmlAttribute nicAtt = xmlDoc.CreateAttribute("NIC");
            nicAtt.Value = nic;
            XmlAttribute idAtt = xmlDoc.CreateAttribute("ID");
            idAtt.Value = id.ToString();

            subNode.Attributes.Append(nameAtt);
            subNode.Attributes.Append(occupationAtt);
            subNode.Attributes.Append(dobAtt);
            subNode.Attributes.Append(nicAtt);
            subNode.Attributes.Append(idAtt);

            xmlDoc.SelectSingleNode("Users").AppendChild(subNode);

            xmlDoc.Save(xmlPath);
        }
    }
}

這是一個示例輸出 XML 文件:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Users>
  <User Name="John" Occupation="student" Date_Of_Birth="1990" NIC="NIC" ID="123" />
  <User Name="David" Occupation="professor" Date_Of_Birth="1973" NIC="NIC" ID="452" />
</Users>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM