我试图在第一次显示表单时播放声音(就像标准消息框一样,需要一个更好的例子)。如果使用通过设计器添加的标准表单,我通常会通过覆盖标准 onshown 事件来执行此操作,然后继续调用 MyBase.OnShown(e)
我现在遇到的问题是表单正在以编程方式创建(将 myForm 设置为新表单等),因此我似乎无法使用 AddHandler 来覆盖此事件。我不怀疑我以完全错误的方式这样做,但我会很感激可以提供的任何建议。我更喜欢从 VB.net 的角度提出建议,但我可以在 C# 中勉强应付。
我试图在第一次显示表单时播放声音(就像标准消息框一样,需要一个更好的例子)。如果使用通过设计器添加的标准表单,我通常会通过覆盖标准 onshown 事件来执行此操作,然后继续调用 MyBase.OnShown(e)
我现在遇到的问题是表单正在以编程方式创建(将 myForm 设置为新表单等),因此我似乎无法使用 AddHandler 来覆盖此事件。我不怀疑我以完全错误的方式这样做,但我会很感激可以提供的任何建议。我更喜欢从 VB.net 的角度提出建议,但我可以在 C# 中勉强应付。
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
由于代码中不存在表单,因此您实际上必须调用该事件。
尝试先写出显示代码:
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()