如何从 VB.NET 中的本地进程更新全局变量 XmlTextWriter?

How to update a global variable XmlTextWriter, from a local process in VB.NET?

我正在尝试构建一个 XML 文件,我在主 class 中生成一个变量类型 XmlTextWriter,以便能够全局读取它。 然后,在 NavButton 中,我创建了一个具有相同名称的新变量并将路径属性发送给它,以便它在特定路径内生成文件。

当我到达条件 if it is TRUE 时,它进入函数并发送 4 个参数,函数正确接收,但是当它开始在 XML 中写入时,它不会发送一个错误并继续正常,但是当打开 XML 已经完成时,它是空的并且只有两行。

我知道您会谈论两个具有相同名称的变量,但一个全局变量和一个局部变量并且两者具有不同的路径。

我的问题是,如何从本地变量更新全局变量的属性或路径并将其传递给正确的路径,以便函数写入 XML 应该是?

这是我的代码:

Public Class Form1
    Dim path As String = "0"
    Dim writerC As New XmlTextWriter(path, System.Text.Encoding.UTF8)
End Class


Private Sub NavButton1_ElementClick(sender As Object, e As NavElementEventArgs) Handles NavButton1.ElementClick

    Dim pathRoot as String = "C:\Temp"        

    Dim strPathC As String = pathRoot & "\" & "e" & TextBox1.Text & ".XML"

        Dim writerC As New XmlTextWriter(strPathC, System.Text.Encoding.UTF8)

        writerC.WriteStartDocument(True)

        writerC.Formatting = Formatting.Indented
        writerC.Indentation = 2

        writerC.WriteStartElement("PageCollection") '---PageCollection---

        if i = 0 then

            sheetTest("A", "B", "C", "D")

        end if

        writerC.WriteEndElement() '---PageCollection/---
        writerC.Close() '---CLOSING XML FILE/---

        pathRoot = pathRoot & "\" & "SentFiles"
        Directory.CreateDirectory(pathRoot)


        MsgBox("Successfully generated files.", MsgBoxStyle.Information + MessageBoxButtons.OK, "TEST")
End Sub


Public Function sheetTest(firstParameter as string, secondParameter as string, thirdParameter as string, fourthParameter as string)

        writerC.WriteStartElement("Page") '---Page---

        writerC.WriteStartElement("Collection") '---Collection---

        writerC.WriteEndElement() '---Collection/---

        writerC.WriteEndElement() '---Page/---

End Function

感谢您的宝贵时间。 问候。

由于 variable scoping 的工作原理,您声明了两个 不同的 变量,名称 相同 writerC), 但范围不同.

试试这个:

Public Class Form1
    Dim path As String = "0"
    Dim writerC As XmlTextWriter
End Class

Private Sub NavButton1_ElementClick(sender As Object, e As NavElementEventArgs) Handles NavButton1.ElementClick

     writerC = New XmlTextWriter(strPathC, System.Text.Encoding.UTF8)

End Sub