この質問のタイトルは少し難解でしたが、ここでより明確に説明します。フォームを複数回使用して別のフォームサブルーチンを呼び出す場合
私は注文書と3種類の手数料表を用意しています。それぞれの表に顧客検索フォーム、サプライヤー検索フォーム、商品検索フォームを開くためのボタンがあります。
オーダーフォーム(frmOrder
)を例として、顧客検索フォーム(frmCustomerSearch
)を開いてみましょう。
私はすべての顧客のリストをロードするためのフォームを作成しました。これにより、ユーザーはリスト内の顧客を見つけたり、名前、コード、カテゴリ別に検索したりできます。
UltraWinGrid
のInfragistics
スイートから結果が表示されます。
行をダブルクリックするとその顧客を選択するために、frmCustomerSearch
が閉じ、選択した顧客コードをサブルーチンに渡される場合frmOrder.addCustomerFromSearch
は、と呼ばれ、その後、frmOrder
は、そのコードを使用して顧客情報を取り込みます。
これは問題なく動作しますが、私はコミッションレート画面に同じfrmCustomerSearch
ウィンドウを開く必要があります。これにより、ユーザは手数料率に追加する顧客を選択することができます。
私は新しい顧客、サプライヤ、製品検索フォームを各ウィンドウに作成したくありませんが、それぞれに同じフォームを使用する方法を考えるのは苦労しています。
現在、私は、クラスの最上部にDim fOrder As frmOrder
を持って続いてきました:
Public Sub New(ByVal conn As OleDb.OleDbConnection, ByVal orderform As frmOrder)
Try
fOrder = orderform
con = conn
InitializeComponent()
Catch ex As Exception
errorLog(ex)
End Try
End Sub
だから、frmOrder
は私が顧客を取り込むために、次のコードを使用することができることを意味し、orderform
パラメータとして渡されます顧客をダブルクリックするとオーダーフォームの詳細が表示されます。私は顧客を取り込むためにそのフォーム上のサブルーチンを呼び出して、パラメータとして別の形で渡すために私を有効にするには、このコードを変更するにはどうすればよい
If fOrder.IsHandleCreated = True Then
fOrder.addCustomerFromSearch(cCode)
Else
MsgBox("Order screen is no longer open, unable to add customer.", MsgBoxStyle.OkOnly, "Error")
End If
?私はDim f As Form
にそれを変更して、再度Public Sub New
でByVal frm As Form
を使用してみましたが、それはでf.addCustomerFromSearch
を探すために形成わからなかったので、そのフォームのサブルーチンが呼び出さすることができませんでした。
はこれですでも可能ですか?うまくいけばそれは理にかなっていますが、説明するのはちょっと混乱します。