我想在卸载时显示自定义窗体。我将使用C#自定义操作。如何使自定义操作等到用户单击“确定”或“取消”?我希望我的自定义操作仅在表单关闭时完成。所以在我的自定义操作中执行以下操作:
CollectUninstallData f = new CollectUninstallData();
f.Show();
return f.FormResult;
但表单暂时闪烁,卸载继续,无需等待表单关闭。这是合乎逻辑的,因为GUI在另一个线程中。但是如何让它等待表单关闭呢?
我知道在安装包中显示自定义窗体表格并不酷,所以如果有人能提供更优雅的解决方案,那么我会谢天谢地接受它。
答案 0 :(得分:0)
您必须使用ShowDialog()
方法而不是Show()
。后者使表单可见并返回控件,这就是您的自定义操作停止执行的原因。前者将表单显示为模式对话框,并且在用户以任何方式关闭表单之前不会返回。
CollectUninstallData f = new CollectUninstallData();
DialogResult r = f.ShowDialog();
f.Dispose();
return r;
如果您想知道用户是单击“确定”还是“取消”,请使用此语句return r == DialogResult.OK ? 0 : 1
。返回码零通常表示成功,非零表示失败。