在我的学习之旅中,我已经到了Visual Studio抱怨我打开,关闭和处理表单的方式(在我完成之后)。 我这样做的方式; Visual Studio告诉我:
即:“Form1创建IDisposable类型”。
因为我想要做得好;我进一步挖了一点,我已经设法理解了“使用”语句的工作原理和应该如何实现;确保事情得到妥善处理。 我的SQL数据库方法(插入,更新和删除)就像魅力一样工作;其中SqlConnection& SqlCommand在哪里创建IDisposable类型。
根据最近的一些研究:Try,Catch和Finally我应该能够像以下一样完成:“using”语句;但它也会在不使用它的情况下关闭表格。 还有Try,Catch,最后;表单将在不使用它的情况下关闭,Visual Studio将抛出相同的“IDisposable Types”消息。
进一步的说法;在我找到的所有“使用”信息之后;我能够大大提高我的应用程序(和我的编码风格);但我无法想象如何使用表格“使用”...... 我可以创建表单的实例但是我不能保持表单打开,直到我完成它或用户单击“关闭”。 因此,我的问题是:如何正确实施这一点?或者这有可能吗?
使用示例:
private void OpenForm1()
{
// Create a new instance of Form1
using (var f1 = new Form1())
{
// Some Code Here
}
// Form1 Instance Gets Disposed at the End of the Loop Above.
}
我的当前(适度)Open& amp;关闭表单方法:
小注意:我从一个将控制的类中调用此方法:
通过表单传递的数据
private Form1 f1;
public void OpenForm1(bool _Open, int _LocX, int _LocY)
{
try
{
switch (_Open)
{
case true:
// Close & Dispose "Form1" (if Opened)
if (f1 != null) { OpenForm1(false, 0, 0); }
// Re-Open Form1 with New Data (if Closed)
if (f1 == null) { f1 = new Form1(_LocX, _LocY); }
f1.Show();
break;
case false:
if (f1 != null) { f1.Close(); f1.Dispose(); f1 = null; }
break;
}
}
catch (InvalidOperationException _IOE) { MessageBox.Show(_IOE.Message); }
}
注意:我知道我可以选择使用/制作IDisposable模式(我仍然不明白如何实现它或以实际方式使用它 - Just Theory到目前为止。我的所有尝试都失败了;导致我不堪重负并且质疑这样做是否会被认为是一种好习惯。)
提前致谢。 最诚挚的问候;
答案 0 :(得分:1)
当您的变量的生命周期结束时,当您的使用区块超出范围时,您只能使用using
。您希望表单超出using
语句范围之外的位置,因此您不应在using
块中使用{。}}。
Form.Close
无论如何都会调用Dispose
,因此您不必在此处担心,因为表单的关闭将处理资源清理。您必须在表单上致电Dispose
的唯一时间是您从未致电Show
。