此代码是否干净?
private void button1_Click(object sender, EventArgs e)
{
frmCustomDialog f = new frmCustomDialog();
if(f.ShowDialog() == DialogResult.OK)
TextBox1.Text = f.MyCustomProperty;
}
您需要关闭或处理表格f或任何其他内容吗?还是自动垃圾收集?
谢谢。
答案 0 :(得分:7)
是的,您应该处理以下表格:
private void button1_Click(object sender, EventArgs e)
{
using (frmCustomDialog f = new frmCustomDialog())
{
if(f.ShowDialog() == DialogResult.OK)
{
TextBox1.Text = f.MyCustomProperty;
}
}
}
ShowDialog()
不会处理该表单,因为您可以重复使用它并再次显示它。如果你不需要这样做,你应该自己处理它。
来自ShowDialog()
的文档:
与无模式窗体不同,关闭 .NET不调用该方法 用户点击时的框架 关闭对话框的表单按钮或 设置DialogResult的值 属性。相反,表格是隐藏的 并且可以再次显示 创建对话框的新实例 框。因为表单显示为 对话框未关闭,您必须 调用表单的Dispose方法 当表格不再需要时 你的申请。
答案 1 :(得分:4)
如果您将窗体显示为对话框窗体(因为您使用form.ShowDialog()调用它),则必须手动处理该对象,因为窗体的Close方法不会自动调用关闭表单时(表单隐藏了)。
您可以阅读更多here。