【发布时间】:2014-09-28 16:26:32
【问题描述】:
我相信在 C# 的 Windows 窗体应用程序中按下关闭按钮时可以运行代码。它是主窗口的子窗体。我想在用户关闭窗口时保存一些用户设置。
private void fileTypeDialog_FormClosing(Object sender, FormClosingEventArgs e)
{
int ArraySize = fileTypesData.Items.Count;
string[] fileTypesToSaveArray = new string[ArraySize];
for (int i = 0; i < ArraySize; i++)
{
fileTypesToSaveArray[i] = fileTypesData.Items[i].ToString();
}
string fileTypesToSave = String.Join(",", fileTypesToSaveArray);
MessageBox.Show(fileTypesToSave.ToString());
Properties.Settings.Default.fileTypes = fileTypesToSave;
Properties.Settings.Default.Save();
}
在我想之前我已经这样做了,但我根本不记得我是怎么做到的。你们能帮帮我吗?
【问题讨论】:
-
你遇到过什么问题?
-
该代码应该在表单关闭的任何时候都可以使用。为了更好地控制它,测试 e.CloseReason 属性。如果需要,您也可以通过设置 e.Cancel = true; 来取消关闭;
-
事件是否已连接?最好使用 override: OnFormClosing 来避免表单必须监听自己的事件。尽量避免使用 MessageBox 进行调试调用,它会干扰太多事情。
-
LarsTech 我如何连接它?我想这与某处的表单设计器有关。但除了你看到的代码,我什么都没做。但由于某种原因,它对我不起作用。关闭窗口时不会显示任何消息框
-
@DanielJørgensen 在 cmets 中使用 @ 符号在 Stack Overflow 上通知他们。如果您没有使用设计器来创建该方法,那么在您的构造函数中,您必须输入:
this.FormClosing += fileTypeDialog_FormClosing;。要避免该事件,只需开始输入“override OnForm”并从智能感知中选择 OnFormClosing。将您的代码放入该代码块中。