windows 窗体中的用户控件在我的 BackgroundWorker 为 运行 时关闭

Usercontrol in windows Form closed when my BackgroundWorker is running

我制作了一个带有 3 个用户控件的表单,并用按钮显示它。 在其中 2 个中,我得到了一个用于备份 SQL 和恢复的表格。 对于备份,我的用户控件在备份完成后关闭。 对于恢复,我 运行 后台 Worker 和我的用户控件在进程中间关闭。

没有错误所以我不知道该怎么办。

我什么都不尝试,因为我没有错误

我用这个在我的表单中添加我的用户控件

if (!Instance.PanelContainer.Controls.ContainsKey("Backup"))
{
    Backup backup = new Backup();
    backup.Dock = DockStyle.Fill;
    PanelTools.Controls.Add(backup);
}
Instance.PanelContainer.Controls["Backup"].BringToFront();

然后我只有一个按钮 运行 一个 SQL 查询

BACKUP DATABASE DBPDM
TO DISK = 'PathBackupNameBackup'
WITH
  FORMAT,
  MEDIANAME = 'SQLServerBackups',
  NAME = 'Full Backup of SQLTestDB';

崩溃发生在 BAK 的结尾

更新:

我发现恢复 UserControl 有问题。因为我杀了explorer.exe.

Usercontrol 是 explorer.exe 吗?我可以在不关闭我的用户控件的情况下杀死资源管理器吗?

我的问题更新。 我的用户控件没有关闭,但就像我说的,我有 3 个用户控件。 当我的应用程序启动时,我加载用户控件 1。 我用一个按钮加载了一个用户控件 2.

当 explorer.exe 被杀死时,用户控件 1 被带回前面。 我看到这是因为我将它加载到 PaintEvent 上:

private void PanelTools_Paint(object sender, PaintEventArgs e)
    {
        _obj = this;
        if (!Instance.PanelContainer.Controls.ContainsKey("Settings"))
        {
            Settings settings = new Settings();
            settings.Dock = DockStyle.Fill;
            PanelTools.Controls.Add(settings);
        }
        Instance.PanelContainer.Controls["Settings"].BringToFront();
    }

为了修复它,我只是在 LoadEvent 上加载我的用户控件 1 :

 private void SupportTools_Load(object sender, EventArgs e)
    {
        _obj = this;
        if (!Instance.PanelContainer.Controls.ContainsKey("Settings"))
        {
            Settings settings = new Settings();
            settings.Dock = DockStyle.Fill;
            PanelTools.Controls.Add(settings);
        }
        Instance.PanelContainer.Controls["Settings"].BringToFront();
    }

非常感谢您抽出宝贵的时间,很抱歉在我解释我的问题时不清楚。