1

我试图在第一次显示表单时播放声音(就像标准消息框一样,需要一个更好的例子)。如果使用通过设计器添加的标准表单,我通常会通过覆盖标准 onshown 事件来执行此操作,然后继续调用 MyBase.OnShown(e)

我现在遇到的问题是表单正在以编程方式创建(将 myForm 设置为新表单等),因此我似乎无法使用 AddHandler 来覆盖此事件。我不怀疑我以完全错误的方式这样做,但我会很感激可以提供的任何建议。我更喜欢从 VB.net 的角度提出建议,但我可以在 C# 中勉强应付。

4

2 回答 2

1

Form.OnShown不是一个事件。相反,它是Form引发表单Shown事件的类的方法。这是解释该OnShown方法的 MSDN 文章:

http://msdn.microsoft.com/en-us/library/system.windows.forms.form.onshown.aspx

当您使用表单设计器创建派生类时,您可以覆盖该OnShown方法,但是当您只是通过其公共接口访问表单时,您需要使用Shown事件来代替。您可以像这样为该事件添加事件处理程序:

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    Dim f As Form1 = New Form1()
    AddHandler f.Shown, AddressOf f_Shown
    f.Show()
End Sub

Private Sub f_Shown(ByVal sender As Object, ByVal e As EventArgs)

End Sub
于 2012-07-17T13:22:06.823 回答
0

由于代码中不存在表单,因此您实际上必须调用该事件。

尝试先写出显示代码:

Public Sub form_Showing(ByVal sender As Object, e As EventArgs)
  // play sound
End Sub

然后在创建表单时,添加事件的处理程序:

Dim f As New Form
AddHandler f.Shown, AddressOf form_Showing
f.Show()
于 2012-07-17T13:17:58.670 回答