1

タイムシートを作成するプログラムがあり、保存されたタイムシートがフォーム 1 のボタンをクリックして読み込まれると、データがフォーム 2 に読み込まれ、フォーム 2 のメソッドが呼び出されてデータがフォーム 3 に印刷されます。Form2.Print()フォーム2を開いた場合、フォーム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 を 1 回だけ初期化し、プログラム全体で使用する場合は、この行を追加して、いつ破棄されないようにする必要があります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

これら2つのラベルのパブリック変数を作成します..

プロジェクトに新しいモジュールを追加し、これを public sCustName、sWONum に 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 に答える