C#不能连续2次打开第二张表格

时间:2016-04-20 21:18:06

标签: c# forms crash

我从课堂开始。

  public partial class Game : Form
        {
            Results toResults = new Results();

这是显示表格的地方

private void ShowResults()
        {
            toResults.Show();
        }

我点击按钮点击

private void resultsButton_Click(object sender, EventArgs e)
            {   
               ShowResults();
            }

如果我运行我的程序并单击按钮打开第三个表单它可以工作,但如果我关闭它并再次尝试它会打破此错误消息(无法访问已处置的对象。)我怎么能解决这个问题。我总共有三种形式,我发现如果我打开游戏类,然后单击按钮打开结果,然后关闭结果和我可以绕过它的游戏。但每次都会发生这种情况并不是我想要的。我怎么能这样做所以我不必关闭游戏类来多次打开结果。

1 个答案:

答案 0 :(得分:1)

问题在于,当您close表单时,关闭对象中创建的所有资源并处理表单。 修复它的最简单方法是处理Closing事件并在处理程序中隐藏表单或在打开它之前创建表单。

    public Game()
    {
        Results toResults = new Results();
        toResults.FormClosing += F_FormClosing;
    }

    private void F_FormClosing(object sender, FormClosingEventArgs e)
    {
        toResults.Hide();
        e.Cancel = true;
    }

    private void ShowResults()
    {
        toResults.Show();
    }

    public partial class Game : Form
    {
        Results toResults;

        private void ShowResults()
        {
           toResults = new Results();
           toResults.Show();
        }