我是VB.NET的新手,我坚持以下几点:
我想在以编程方式创建的Form关闭之前执行一些操作。
我需要处理我的Form的Close事件(在代码中创建)。
我该怎么做?
以下是他们如何使用C#
{
Form1 f = new Form1();
f.FormClosed += new FormClosedEventHandler(f_FormClosed);
f.Show();
}
void f_FormClosed(object sender, FormClosedEventArgs e)
{
// Do stuff here
}
答案 0 :(得分:1)
“但在C#Form中的FormClosed在vb.NET中不可用” - 实际上它是,但如果您当前没有声明,则IntelliSense通常不会显示事件一个事件。
在VB.NET中,您使用AddHandler statement订阅事件。
Dim f As New Form1
AddHandler f.FormClosed, AddressOf f_FormClosed
f.Show()
...
Private Sub f_FormClosed(sender As Object, e As System.FormClosedEventArgs)
End Sub
答案 1 :(得分:1)
在VB.NET中,事件的处理方式略有不同。
如果除了表单的Handles
委托声明之外还想使用FormClosed
子句,则需要使用Form
关键字声明对象(在您的情况下为WithEvents
)在模块级别:
Private WithEvents frmX AS New Form
然后你可以写:
Private Sub frmX_FormClosed(sender As Object, e As FormClosedEventArgs) Handles frmX.FormClosed
End Sub
然后,编译器将根据需要处理附加和分离处理程序。
如果您想自己控制,请在任意位置声明Form
,并根据需要使用AddHandler
和RemoveHandler
指令:
// Define the handler delegate as usual:
Private Sub frmX_FormClosed(sender As Object, e As FormClosedEventArgs)
End Sub
// Somewhere else in your code use this:
// To attach the handler:
AddHandler frmX.FormClosed, AddressOf Form5_FormClosed
// To detach the handler:
RemoveHandler frmX.FormClosed, AddressOf frmX_FormClosed
.FormClosed
/ AddHandler
上下文中会弹出RemoveHandler
。
请注意AddressOf
关键字。当您需要指定委托时,它是必需的。