私の問題を解決する解決策を思いついたのですが、最初のアプローチが失敗した理由に興味があります。私のシナリオは次のとおりです。
イベントを発生させるフォームがあります:
Public Class frmDgvLb
Public Delegate Sub ProfileChanged()
Public Event UpdateProfile As ProfileChanged
Private Sub lbDgvEdit_SelectedIndexChanged(sender As System.Object, e As System.EventArgs) Handles lbDgvEdit.SelectedIndexChanged
If UpdateHotlist(cmdStr) = True Then
If DgvName = "dgvHotlist" Then
Hotlist.LoadDGV()
ElseIf DgvName = "dgvJobProfile" Then
RaiseEvent UpdateProfile()
End If
Me.Close()
End If
End Sub
End Class
イベントを定義して処理する別のフォームがあります。
Public Class frmGraph
Public Sub New()
InitializeComponent()
AddHandler frmDgvLb.UpdateProfile, AddressOf RefreshProfiles
End Sub
Public Sub RefreshProfiles()
GetProfiles(lbMach.SelectedItem, dtpJobDate.Value)
CreateGraph(dtpJobDate.Value, _machList)
zgc.Refresh()
End Sub
End Class
私の問題は、RaiseEvent UpdateProfile() が 1 回しか実行されないことでした。リストボックスのその後のすべてのインデックス変更は、イベントを発生させませんか? デバッガーでステップ実行するとき、条件が true と評価されると、デバッガーは RaiseEvent 行にステップし、次に条件ステートメントを閉じる行にステップし、RefreshProfile Sub は実行されません。繰り返しますが、リストボックスのインデックスが初めて変更されると、すべて正常に機能します。どうしてこれなの?