卸载时自定义Windows窗体

时间:2011-04-29 15:13:24

标签: winforms installation wix windows-installer custom-action

我想在卸载时显示自定义窗体。我将使用C#自定义操作。如何使自定义操作等到用户单击“确定”或“取消”?我希望我的自定义操作仅在表单关闭时完成。所以在我的自定义操作中执行以下操作:

    CollectUninstallData f = new CollectUninstallData();
            f.Show();
            return f.FormResult;

但表单暂时闪烁,卸载继续,无需等待表单关闭。这是合乎逻辑的,因为GUI在另一个线程中。但是如何让它等待表单关闭呢?

我知道在安装包中显示自定义窗体表格并不酷,所以如果有人能提供更优雅的解决方案,那么我会谢天谢地接受它。

1 个答案:

答案 0 :(得分:0)

您必须使用ShowDialog()方法而不是Show()。后者使表单可见并返回控件,这就是您的自定义操作停止执行的原因。前者将表单显示为模式对话框,并且在用户以任何方式关闭表单之前不会返回。

CollectUninstallData f = new CollectUninstallData();
DialogResult r = f.ShowDialog();
f.Dispose(); 
return r;

如果您想知道用户是单击“确定”还是“取消”,请使用此语句return r == DialogResult.OK ? 0 : 1。返回码零通常表示成功,非零表示失败。