gpt4 book ai didi

c# - 用户控件中的 HandleDestroyed 事件

转载 作者:行者123 更新时间:2023-12-05 01:22:02 27 4
gpt4 key购买 nike

我有一个非常简单的自定义用户控件,名为 MyControl

在我的表单中,我有这段代码(我试图在 InitalizeCompoment 之后将它放入 LoadEvent 和构造函数中):

var crl = new MyControl();
Controls.Add(ctrl);
ctrl.HandleDestroyed+=(sender,evt) => { MessageBox.Show("Destroyed") };

但是当我关闭表单处理程序时,它永远不会被调用。

最佳答案

如果它在主窗体上,那么我认为事件不会被调用。尝试在 FormClosing 事件中放置控件以强制调用该事件:

void Form1_FormClosing(object sender, FormClosingEventArgs e) {
crl.Dispose();
}

另一种方法是将 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());
}

或在 Lambda 方法中:

void UserControl1_Load(object sender, EventArgs e) {
this.ParentForm.FormClosing += (s, evt) => { OnHandleDestroyed(new EventArgs()); };
}

关于c# - 用户控件中的 HandleDestroyed 事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8657862/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com