我有一个非常简单的自定义 UserControl,名为 MyControl
在我的表单中,我有以下代码(我尝试将其放入 LoadEvent 和构造函数中,在 InitalizeCompoment 之后):
var crl = new MyControl();
Controls.Add(ctrl);
ctrl.HandleDestroyed+=(sender,evt) => { MessageBox.Show("Destroyed") };
Run Code Online (Sandbox Code Playgroud)
但是当我关闭时,表单处理程序永远不会被调用。
如果它在主窗体上,那么我认为该事件不会被调用。尝试在事件中处理控件FormClosing以强制调用事件:
void Form1_FormClosing(object sender, FormClosingEventArgs e) {
crl.Dispose();
}
Run Code Online (Sandbox Code Playgroud)
另一种方法是将FormClosing事件添加到UserControl:
void UserControl1_Load(object sender, EventArgs e) {
this.ParentForm.FormClosing += new FormClosingEventHandler(ParentForm_FormClosing);
}
void ParentForm_FormClosing(object sender, FormClosingEventArgs e) {
OnHandleDestroyed(new EventArgs());
}
Run Code Online (Sandbox Code Playgroud)
或者在 Lambda 方法中:
void UserControl1_Load(object sender, EventArgs e) {
this.ParentForm.FormClosing += (s, evt) => { OnHandleDestroyed(new EventArgs()); };
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
10306 次 |
| 最近记录: |