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();
}
非常感谢您抽出宝贵的时间,很抱歉在我解释我的问题时不清楚。
我制作了一个带有 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();
}
非常感谢您抽出宝贵的时间,很抱歉在我解释我的问题时不清楚。