0

そこで、アプリケーションでビデオ ファイルを再生したいと考えました。ToolStripMenuItem を介して 1 つを選択します。私は、500 個の ToolStripMenuItems すべてに対してコードをほぼオールラウンダーにしました。私がやろうとしているコード:

Dim Inst As String = My.Computer.FileSystem.SpecialDirectorys.ProgramFiles + "\folder\"

Private Sub PlayVid(Name)
    AxWindowsMediaPlayer1.URL = Inst + IO.File.ReadAllLines(Inst + "directorys.txt")(Name.Txt.Substring(0, 3))
End Sub

Private Sub ToolStripMenuItem1_Click(sender As System.Objekt) ToolStripMenuItem1.Click
    Call PlayVid(Ctype(sender, ToolStripMenuItem))
End Sub

これで、各 ToolStripMenuItem に割り当てる必要のあるコードは短くなりましたが、それでも 500 を超えるものに対してこれを行う必要があります。したがって、私の質問は、(おそらく Form.Load で) this( Call PlayVid(Ctype(sender, ToolStripMenuItem)) ) コードを全員に割り当てる方法があるかどうかです。何かのようなもの:

Private Sub Form_Load() Handles MyBase.Load
    Dim T As Control
    For Each T in Controls
        If TypeOf C is ToolStripMenuItem Then
            C.Code = Call PlayVid(Ctype(sender, ToolStripMenuItem))
        End If
    Next
End Sub

そのようなことさえ可能ですか?もしそうなら、それはどのように機能しますか?

4

1 に答える 1

0

500メニュー?わお。

とにかく、メニュー項目を作成するとき、パラメーターの 1 つはクリック ハンドラー用です。

Dim tsm As New ToolStripMenuItem("YourFile", Nothing, AddressOf PlayVid)

PlayVid メソッドには、クリック イベントに一致する適切なパラメーターが必要です。

Private Sub PlayVid(sender As Object, e As EventArgs)

End Sub

ToolStripMenuItems は、従来の意味でのコントロールではありません。親メニュー項目を参照します。

For Each menuItem As ToolStripMenuItem In ToolStripDropDownButton1.DropDownItems

Next
于 2013-03-28T23:40:40.620 に答える