0

我正在尝试为我的 windows 窗体设置一个设置区域,我将能够为我的应用程序保存 4 组设置。

写入 XML 文件不是问题,因为到目前为止我的代码没有问题,我可以成功地做到这一点。

问题来自读取 xml 文件。本质上,我希望当用户打开设置表单时,将 xml 文件中的值插入到设置表单上的“特定”文本框中。

有没有人能告诉我我做错了什么,如果可能的话,提供一些示例代码来帮助我让阅读部分正常工作?

代码如下,我想在设置框中添加要读取的所有 id(1 到 4),现在只提供 id1 直到我可以为其他人获得正确的代码。

Public Class SettingsFrm

Private Sub SettingsFrm_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    Dim rdxmlfile As String = "\\ServerA\ITDept\test\Settings.xml"

    'Create the xml xmlreader
    Dim XMLR As New Xml.XmlTextReader(rdxmlfile)

    'Read the id1 element
    XMLR.ReadStartElement("id1")

    'Read the value of the code1 element and display in the appropriate textbox
    XMLR.ReadStartElement("code1")
    XMLR.ReadString(CDtxtbx1.Text)
    XMLR.ReadEndElement()

    'Read the value of the docgroup1 element and display in the appropriate textbox
    XMLR.ReadStartElement("docgroup1")
    XMLR.ReadString(DGtxtbx1.Text)
    XMLR.ReadEndElement()

    'Read the value of the doctype1 element and display in the appropriate textbox
    XMLR.ReadStartElement("doctype1")
    XMLR.ReadString(DTtxtbx1.Text)
    XMLR.ReadEndElement()

    'Read the value of the docsubtype1 element and display in the appropriate textbox
    XMLR.ReadStartElement("docsubtype1")
    XMLR.ReadString(DSTtxtbx1.Text)
    XMLR.ReadEndElement()

    'close the id1 element
    XMLR.ReadEndElement()

    'close cml
    XMLR.Close()

End Sub

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    Dim svxmlfile As String = "\\ServerA\ITDept\test\Settings.xml"

    'Create the xml writer obeject
    Dim XMLW As New Xml.XmlTextWriter(svxmlfile, System.Text.Encoding.GetEncoding("UTF-8"))

    'xml format to be written as:
    '<id1>
    '   <code1> FTO </code1>
    '   <docgroup1> Operations </docgroup1>
    '   <doctype1> Funds Transfer </doctype1>
    '   <docsubtype1> Out </docsubtype1>
    '</id1>

    XMLW.Formatting = Xml.Formatting.Indented

    'write id1
    XMLW.WriteStartElement("id1")

    ' <code element>
    XMLW.WriteStartElement("code1")
    XMLW.WriteValue(CDtxtbx1.Text)
    XMLW.WriteEndElement()

    ' <DocGroup element>
    XMLW.WriteStartElement("docgroup1")
    XMLW.WriteValue(DGtxtbx1.Text)
    XMLW.WriteEndElement()

    ' <DocType element>
    XMLW.WriteStartElement("doctype1")
    XMLW.WriteValue(DTtxtbx1.Text)
    XMLW.WriteEndElement()

    ' <DocSubType element>
    XMLW.WriteStartElement("docsubtype1")
    XMLW.WriteValue(DSTtxtbx1.Text)
    XMLW.WriteEndElement()

    'the end of id1
    XMLW.WriteEndElement()

    'write id2
    XMLW.WriteStartElement("id2")

    ' <code element>
    XMLW.WriteStartElement("code2")
    XMLW.WriteValue(CDtxtbx2.Text)
    XMLW.WriteEndElement()

    ' <DocGroup element>
    XMLW.WriteStartElement("docgroup2")
    XMLW.WriteValue(DGtxtbx2.Text)
    XMLW.WriteEndElement()

    ' <DocType element>
    XMLW.WriteStartElement("doctype2")
    XMLW.WriteValue(DTtxtbx2.Text)
    XMLW.WriteEndElement()

    ' <DocSubType element>
    XMLW.WriteStartElement("docsubtype2")
    XMLW.WriteValue(DSTtxtbx2.Text)
    XMLW.WriteEndElement()

    'the end of id2
    XMLW.WriteEndElement()

    'write id3
    XMLW.WriteStartElement("id3")

    ' <code element>
    XMLW.WriteStartElement("code3")
    XMLW.WriteValue(CDtxtbx3.Text)
    XMLW.WriteEndElement()

    ' <DocGroup element>
    XMLW.WriteStartElement("docgroup3")
    XMLW.WriteValue(DGtxtbx3.Text)
    XMLW.WriteEndElement()

    ' <DocType element>
    XMLW.WriteStartElement("doctype3")
    XMLW.WriteValue(DTtxtbx3.Text)
    XMLW.WriteEndElement()

    ' <DocSubType element>
    XMLW.WriteStartElement("docsubtype3")
    XMLW.WriteValue(DSTtxtbx3.Text)
    XMLW.WriteEndElement()

    'the end of id3
    XMLW.WriteEndElement()

    'write id4
    XMLW.WriteStartElement("id4")

    ' <code element>
    XMLW.WriteStartElement("code4")
    XMLW.WriteValue(CDtxtbx4.Text)
    XMLW.WriteEndElement()

    ' <DocGroup element>
    XMLW.WriteStartElement("docgroup4")
    XMLW.WriteValue(DGtxtbx4.Text)
    XMLW.WriteEndElement()

    ' <DocType element>
    XMLW.WriteStartElement("doctype4")
    XMLW.WriteValue(DTtxtbx4.Text)
    XMLW.WriteEndElement()

    ' <DocSubType element>
    XMLW.WriteStartElement("docsubtype4")
    XMLW.WriteValue(DSTtxtbx4.Text)
    XMLW.WriteEndElement()

    'the end of id4
    XMLW.WriteEndElement()

    'close the element
    XMLW.Close()

    MessageBox.Show("Settings Saved")
End Sub

End Class

我对 VB.net 和一般编程非常陌生,所以如果有一种更简单的方法来做我想做的事情,那么我会全力以赴。我最初考虑可能使用 INI 文件来存储我的设置表单的设置,但在阅读了几个论坛后,我发现不再使用 ini 文件并且被认为是“黑暗时代”。

我愿意接受建议。我的表格如下所示:

设置表格

任何帮助或示例代码将不胜感激。

4

2 回答 2

0

您实际上并没有在任何地方设置文本框的值。看起来您将它们的.Text属性作为参数传递给该.ReadString()方法,但是该方法甚至接受参数吗?请参阅MSDN。根据该链接,从 XML 文件.ReadString() 返回字符串。因此,您需要将文本框设置为该返回值:

CDtxtbx1.Text = XMLR.ReadString()
于 2013-05-28T17:43:46.503 回答
0

根据此 MSDN page,您为什么不尝试以下操作:

XMLR.ReadStartElement("code1")
CDtxtbx1.text=XMLR.ReadString()
XMLR.ReadEndElement()
于 2013-05-28T17:45:06.237 回答