从 form2 对 form1 执行操作

Performing actions on form1 from form2

提问人:tnils25 提问时间:11/12/2023 最后编辑:SSStnils25 更新时间:11/13/2023 访问量:40

问:

我在 form1 上有这个子:

  Public Sub PlayMaskVideo(filePath As String)
      If File.Exists(filePath) Then
          If MaterialTabControl2.SelectedIndex = 0 Then Mask0Img.Visible = False

          If libVLC Is Nothing Then
              Core.Initialize()
              libVLC = New LibVLC()
          End If

          mediaPlayer = New MediaPlayer(libVLC)
          Mask0VLC.MediaPlayer = mediaPlayer

          media = New Media(libVLC, filePath, FromType.FromPath)
          media.AddOption("input-repeat=65535")
          mediaPlayer.Volume = 0
          mediaPlayer.Play(media)
      End If
  End Sub

如果在 Form1 上调用此代码,则此代码将按预期工作,它会在窗体上的 vlcsharp 播放器中播放视频。

我想做的是从form2中调用它,如下所示:

Form1.PlayMaskVideo(outputPreview)

我希望视频在 form1 视频播放器中播放,但没有任何反应。我以为可能是 vlcsharp 的问题,但即使这一行也没有执行:

If MaterialTabControl2.SelectedIndex = 0 Then Mask0Img.Visible = False

我错过了什么吗?

vb.net winforms libvlcsharp

评论

0赞 Andrew Mortimer 11/12/2023
“Form1.PlayMaskVideo(outputPreview)” < - “Form1”是窗体的名称,还是窗体实例的名称?您可能违反了 vb 中的默认实例。
0赞 tnils25 11/12/2023
是的,它被称为 Form1。我也刚刚尝试删除FileExists条件,但仍然没有去。
0赞 Andrew Mortimer 11/12/2023
但是,在调用方法之前是否实例化了表单的实例?或者只是像你的代码所示那样称呼它?您需要“将 f 调暗为新的 Form1”->“f.PlayNaskVideo...”
0赞 tnils25 11/12/2023
所以我把代码改成这样:'Dim f1 As New Form1 f1.PlayMaskVideo(outputPreview)'。仍然不起作用,我认为至少这条线应该开火?'如果 MaterialTabControl2.SelectedIndex = 0 then Mask0Img.Visible = False' 奇怪的是,我在 PlayMaskVideo(outputPreview) 子中放置了一个 msgbox(“test”),并且 DID 触发了。只是似乎控件无法访问?
1赞 jmcilhinney 11/12/2023
话虽如此,如果 Form1 是您的启动窗体,那么它应该是默认实例,所以也许是其他问题。这就是为什么在提出问题之前,您需要先调试代码。如果您不知道如何调试,请停止您正在做的事情并立即学习。

答: 暂无答案