1

我有一个用于创建时间表的程序,当通过单击表单 1 上的按钮加载保存的时间表时,数据会加载到表单 2,然后调用表单 2 中的方法将数据打印到表单 3。问题出在如果我打开它,则呼叫Form2.Print()在表格 2 上没有数据,但仍然可以将数据打印到表格 3。如果我删除Form2.Print()表格 2 上加载的数据,然后我可以单击打印按钮,如果我打开表格 2数据仍然在文本框中。注意:理想情况下,我只是将数据从表单 1 上的打开按钮单击事件发送到表单 2 和表单 3,但是Print()表单 2 上的方法对程序做了很多事情,而不仅仅是打印,因此更容易调用它而不是复制它在打开点击。提前感谢您的帮助。干杯!

表格 1Code

    Private Sub Open_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Open.Click
        Dim xmldoc As XmlDocument
        Dim nodelist As XmlNodeList
        Dim node As XmlNode
        Dim objForm2 As Object = Form2 

        xmldoc = New XmlDocument()
        xmldoc.Load("C:\time.xml")
        nodelist = xmldoc.SelectNodes("/Timesheet/Job1")

        For Each node In nodelist
            Dim CustName = node.ChildNodes.Item(0).InnerText
            Form2.txtbxCustName.Text = CustName
            Dim WO = node.ChildNodes.Item(1).InnerText
            Form2.txtbxWONum.Text = WO
        Next

        objForm2.Print()
    End Sub

`

表格 2Code

    Private Sub btnPrint_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnPrint.Click
        Print()
    End Sub

    Public Sub Print()
        Form3.labelCustName.text = txtbxCustName.text
        Form3.labelWOnum.text = txtbxWOnum.text
        Me.Close()
    End Sub
4

2 回答 2

1

无需转换Form2为对象然后调用 print 。从表单的新实例中,您将直接调用它。并且您每次都将新值分配给每个块内部的文本框。为了实现你想要的,你可以做很多方法而不是texbox我将用对象展示的String对象。

在您的 Form2 和 Form3 类中添加

   Public Property xmldata as String 'use your own class or other types List  controls(textbox,.)whatever you want . 

    'You have to do inside open click
    Dim form2 as new Form2()  

如果您只想初始化一次 form2 和 form3 并在整个程序中使用它,那么您应该添加这一行以防止closing()

     Private Sub Form2_FormClosing(sender As Object, e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing
             Me.Hide()
             e.Cancel = True
     End Sub 


     form2.xmldata=yourxmldata
     form2.print()
     form2.show()'show form2

如果它对你有帮助,现在就让我看看。如果不是,我将重新编辑我的答案,以便您理解

于 2013-05-20T01:00:38.503 回答
0

为这两个标签创建公共变量..

将新模块添加到您的项目并将其添加到 public sCustName, sWONum as String

并更改您的 Form2 Print() ..

Public Sub Print()
    Form3.labelCustName.text = txtbxCustName.text
    sCustName = txtbxCustName.text
    Form3.labelWOnum.text = txtbxWOnum.text
    sWONum = txtbxWOnum.text
    Me.Close()
End Sub

因此,如果您需要放回表格 2,那么

Form2.txtbxCustName.Text = sCustName
Form2.txtbxWONum.Text = sWONum
于 2013-05-20T02:19:29.930 回答