c#无模式对话框Dispose()不能按预期运行

时间:2018-08-11 15:49:52

标签: c#

我是C#的新手,并且Windows Form项目有问题。我是 不知道我是否正确执行了此操作?

我在一个显示“无模式对话框”的Windows窗体上有一个“帮助按钮”。 我希望这是无模式的,以便用户可以以主要形式进行工作 并保留“帮助”表单,并在需要时将其最小化。

我要求用户再次按下“帮助按钮”, 只需将“无模式”对话框放回最前面,即使该对话框已最小化也是如此。 我不想创建一个新的“无模式帮助对话框”,并最终得到许多 其中我只想要一个。

我有一个主要形式的全局变量

FormHelp goHelpDialog = null;

“帮助按钮”的处理程序为

    private void buttonHelp_Click(object sender, EventArgs e)
    {
        // If we havent already created a HelpDialog create it and Show() it 
        // Else just bring it to the front
        if (goHelpDialog == null)
        {
            goHelpDialog = new FormHelp();

            // Show goHelpDialog as a modless dialog so dont dispose of a modeless as we want that to stay alive
            // Note Dispose() is automatically called when user closes dialog.
            goHelpDialog.Show();
        }
        else
        {
            if (goHelpDialog.WindowState == FormWindowState.Minimized)
                goHelpDialog.WindowState = FormWindowState.Normal;

            goHelpDialog.BringToFront();
        }

        return;
    }

如果用户一直按“帮助按钮”,则此方法很好。我的问题是什么时候 用户关闭“无模式帮助对话框”,然后再次按“帮助按钮” 得到一个断言,因为

if (goHelpDialog == null) 

不为null。因此,不会创建新的“无模式帮助对话框”。 我认为goHelpDialog没有正确被Dispose()处理? 感谢您的建议。

0 个答案:

没有答案