gpt4 book ai didi

c# - FormClosing 事件被多次调用

转载 作者:行者123 更新时间:2023-11-30 14:24:11 30 4
gpt4 key购买 nike

我有一个组合框来设置用户文化: User culture combo-box

如果我更改 Culture 值 x 次,当用户尝试退出时,FormClosing 方法将被触发 x 次。

这是我的 FormClosing 事件:

    private void FrmParent_FormClosing(object sender, FormClosingEventArgs e)
{
if (MessageBox.Show(this, Properties.Resources.msgExit, this.Text, MessageBoxButtons.YesNo, MessageBoxIcon.Question) == System.Windows.Forms.DialogResult.No)
e.Cancel = true;
}

这是我的组合框值更改事件:

    void cbCulture_ToolValueChanged(object sender, ToolEventArgs e)
{
ComboBoxTool cbCulture = (ComboBoxTool)sender;
var culture = cbCulture.Value.ToString();

FormHelpers.SetCulture(culture);

this.Controls.Clear();
this.InitializeComponent();
InitForm();
}

我必须清理并初始化控件以将 UI 更改为新区域性,但是这样做我是否在 InitializeComponent() 中多次分配 FormClosing 事件?我怎样才能避免这种行为?

最佳答案

是因为InitializeComponent,在那个方法forms design mode properties/events设置的。所以每次它都会添加一个 FormClosing event。为避免这种情况,请在 this.InitializeComponent();

上方添加此行
this.FormClosing -= new System.Windows.Forms.FormClosingEventHandler(this.FrmParent_FormClosing);

注意:它只解决FormClosing事件问题

关于c# - FormClosing 事件被多次调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42001948/

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