2017-07-04 3 views
0

ツールストリップメニュー項目には呼び出しメソッドがありません。私は赤い波状の線を得る。代理人/呼び出しなしで更新するにはどうすればよいですか?ツールストリップメニュー項目には呼び出しメソッドがありません。バックグラウンドスレッドで更新する方法

 Private Delegate Sub AppendTSMIDelegate(ByVal TMSI As ToolStripMenuItem, ByVal b As Boolean) 
Private Sub AppendTSMI(ByVal TSMI As ToolStripMenuItem, ByVal b As Boolean) 
    If **TSMI.InvokeRequired** Then 
     TSMI.Invoke(New AppendTSMIDelegate(AddressOf AppendTSMI), New Object() {TSMI, b}) 
    Else 
     'TSMI. 
    End If 
+0

フォームのメンバーを使用します。適切なスレッドが所有している限り、それらのメンバーを使用するオブジェクトは重要ではありません。ところで、サブタイプに 'Action'を、関数に' Func'を使うことができるときに、独自のデリゲート型を宣言する必要はありません。 – jmcilhinney

+0

ありがとう、私はそれを読み上げます。 – Jimva

答えて

0

答えは、代わりにツールストリップの呼び出しステータスを確認することです。多くの考えと読書が私に答えを与えました!

 Private Sub AppendTSMI(ByVal TSMI As ToolStripMenuItem, ByVal b As Boolean) 

    Dim ST1 As StatusStrip = StatusStrip1 

    If ST1.InvokeRequired Then 
     ST1.Invoke(New AppendTSMIDelegate(AddressOf AppendTSMI), New Object() {TSMI, b}) 
    Else 
     TSMI.Checked = b 
    End If 

End Sub 
関連する問題