AddHandler イベントへのパラメーターの追加に関する現在の投稿をすべて読みましたが、それらを自分の状況に適用できませんでした。
VB.NET 2008 の MDI プログラムには、複数のモーダル データ エントリ フォームを呼び出して注文をテーブルに追加するモジュール QuickSaleModule があります。これが行われている間、テーブル内のすべての注文を表示するグリッド付きのフォームが開かれます。このフォーム グリッドは注文モジュールとは別に開かれているため、フォームとモジュールはソリューション内の同じプロジェクトの一部ですが、相互に依存していません。注文のグリッドは、SQL クエリから取得されます。
モジュールでは、単純なイベントを定義しました:
パブリック イベント RefreshGrid()
モジュールの特定の時点で、注文を入力して保存した後に発生させます。
RaiseEvent RefreshGrid()
注文グリッド フォームでは、load イベントに次のように表示されます。
AddHandler QuickSaleModule.RefreshGrid, AddressOf RefreshMyGrid
そして、 RefreshMyGrid() ハンドラーの場合、次のものがあります。
Public Sub RefreshMyGrid()
DoReturnSetup() – a sub in the grid form
removeHandler QuickSaleModule.RefreshGrid, AddressOf RefreshMyGrid
End Sub
これにより、SQL クエリが呼び出され、グリッドフォームが新しい順序で更新されます。終了する前に、quickSaleModule を介して多数の注文が追加される可能性があるため、新しい注文が入力されるたびにイベントを呼び出します。そのため、クローズされたフォームでハンドラーを削除する意味がありませんでした。ただし、これは私が作成した最初の AddHandler イベントです。
ここに私の質問があります:
最も重要な。モジュールにある orderID をパラメーターとしてグリッド フォームの RefreshMyGrid ハンドラーに渡すにはどうすればよいですか? グローバル変数を使用できると思いますが、もっと良いものを好むでしょう。イベントの初心者として、イベントを呼び出す他の方法を使用できるようには見えませんでした。グリッド フォームから呼び出されたデータ入力フォームを終了するときに、 with イベント (引数付き) を使用します。しかし、私が言ったように、この場合、関係はありません。
「removeHandler QuickSaleModule.RefreshGrid、AddressOf RefreshMyGrid」の場所は正しいですか? または、フォームのクローズドイベントにある必要があります。
最後に、RefreshMyGrid は公開する必要がありますか?