我有一个下拉框用于设置用户文化(语言和地区):
如果我更改文化值x次,当用户尝试退出时FormClosing方法将会触发x次。
以下是我的FormClosing事件:
![用户文化下拉框](https://istack.dev59.com/9D0Ym.webp)
以下是我的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()
? - Pikoh