【问题标题】:C# can't open a second form 2+ times in a rowC# 无法连续打开第二个表单 2 次以上
【发布时间】:2016-04-20 21:18:05
【问题描述】:

我刚开始上课。

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

这是显示表格的地方

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

我已经取消了按钮点击

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

如果我运行我的程序并单击按钮打开第三种表单,它可以工作,但是如果我关闭它并重试,它会因此错误消息而中断(无法访问已处置的对象。)我该如何解决这个问题。我一共有三个表格,我发现如果我打开游戏类,然后点击按钮打开结果,然后关闭结果,我可以绕过它。但每次都做到这一点并不是我想要的。我怎样才能做到,这样我就不必关闭游戏类来多次打开结果了。

【问题讨论】:

  • 您创建了对表单的单个引用,但用户可以关闭该表单,而不仅仅是隐藏它,
  • 谢谢,解决了。我让按钮隐藏它而不是关闭它。

标签: c# forms crash


【解决方案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();
        }

【讨论】:

    猜你喜欢
    • 2012-07-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多