【发布时间】:2018-08-02 21:50:47
【问题描述】:
我有两个表格,Form1 和 Form2。当程序运行时,Form1 是启动的窗体。然后我想调用Form2,显示在Form1前面,在Form2中做一些事情,然后不用输入就自动关闭Form2,这样用户就可以继续使用Form1了。
我尝试了以下方法:
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
Form2 otherForm = new Form2();
otherForm.ShowDialog();
//do more stuff here after Form2 has opened and closed
}
}
public partial class Form2 : Form
{
public Form2()
{
InitializeComponent();
//do some stuff here
this.Close();
}
}
当我尝试此操作时,我得到一个 ObjectDisposedException 并显示消息“无法访问已处置的对象”。我试过搜索互联网,但没有找到任何东西。我尝试使用 this.Dispose() 代替,以及使用 .Show() 代替 .ShowDialog()。我试图以这种方式完成的事情可能吗?
我曾想过将 Form2 设为自己的 .exe 并调用 .exe 作为替代方案,但我想在重写所有内容之前先询问 StackOverflow 的专家。
【问题讨论】:
-
您到底想在 Form2 上做什么?在构造函数中关闭它似乎适得其反。
-
form2 构造函数末尾的
this.Close是什么?把它拿出来。 ShowDialog 为您关闭表单 -
@orhtej2 Form2 是一个窗口,它将检查更新并提供实时状态。我有一个禁用的多行文本框,我在其中显示多行文本。我想检查更新,如果有更新下载更新,然后关闭检查更新窗口。
-
@pm100 ShowDialog 需要用户输入才能关闭。我不希望用户必须手动关闭窗口。我想在检查完更新后自己关闭它。