我有一个用于创建时间表的程序,当通过单击表单1上的按钮加载保存的时间表时,数据加载到表单2,然后调用表单2中的方法将数据打印到表单3。问题是在调用Form2.Print()
之后,如果我打开它,表单2上没有数据,但仍然可以将数据打印到表单3.如果我删除Form2.Print()
,则数据加载到表单2上然后,我可以单击“打印”按钮,如果我再次打开表单2,则数据仍在文本框中。注意:理想情况下,我只是将数据从表单1上的“打开”按钮单击事件发送到表单2和表单3,但表单2上的Print()
方法对程序执行了许多操作,而不仅仅是打印使其更容易在Open打开点击中调用它而不是复制它。提前感谢您的帮助。干杯!
表格1 Code
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
`
表格2 Code
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
答案 0 :(得分: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
现在可以帮助你。如果不是,我会重复我的回答,以便你明白
答案 1 :(得分: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