【发布时间】:2013-09-22 09:16:46
【问题描述】:
我有一个 Windows 窗体,它在软件应用程序中用作图片查看器。用户选择一些东西并点击一个提示表单的工具。当他们选择另一个项目来查看另一个图像时,会显示另一个表单窗口,我使用以下内容隐藏以前的表单。
我的问题是这会导致内存问题还是什么?假设在用户查看会话期间可能会打开和隐藏 50 个表单。
private void ShowImageViewer()
{
FormCollection fc = Application.OpenForms;
foreach (Form frm in fc)
{
if (frm.Visible)
{
frm.Hide();
}
}
ImageViewer viewer = new ImageViewer(this, parcelID);
viewer.Show();
viewer.Focus();
}
【问题讨论】:
-
如果用户选择图像 A,然后选择图像 B,然后再次选择图像 A,是创建了三个表单还是只创建了两个?换句话说,每次选择图像时都会创建一个新表单吗?我问,因为这将决定你是否应该
.Hide()或.Close()表格。 -
自己试试看。您最终会再次显示其他表单,还是创建表单然后在它们永远不会再次显示时隐藏它们?如果它们真的“完成”了,只需关闭它们。
-
为什么不简单的替换同格式的图片呢?每次创建一个新形式的实例,你的内存消耗都会增加。
标签: c# winforms visual-studio-2010 .net-4.0