0

所以,我想让我的应用程序播放视频文件。您可以通过 ToolStripMenuItem 选择一个。我使代码几乎成为所有 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 中)将这个(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 个菜单项?哇。

无论如何,当您创建菜单项时,其中一个参数是用于单击处理程序的:

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 回答