由于某些要求,我必须以SaveFileDialog
编程方式关闭而不使用PINVOKE。
SaveFileDialog
除了使用PINVOKE方式以外,还有其他关闭方式吗?我曾尝试关闭的所有者形式SaveFileDialog
,但SaveFileDialog
仍然存在。
我尝试过的
ShowDialog()
的SaveFileDialog
。SaveFileDialog.Dispose()
关闭owner
传递给该ShowDialog(owner);
方法的窗口应该可以。例如:
private static Form CreateDummyForm(Form owner) {
Form dummy = new Form();
IntPtr hwnd = dummy.Handle; // force handle creation
if (owner != null) {
dummy.Owner = owner;
dummy.Location = owner.Location;
owner.LocationChanged += delegate {
dummy.Location = owner.Location;
};
}
return dummy;
}
[STAThread]
static void Main() {
Form form = new Form();
form.Size = new Size(400,400);
Button btn = new Button { Text = "btn" };
btn.Click += delegate {
SaveFileDialog fsd = new SaveFileDialog();
int timeoutMillis = 5000;
Form dummy = CreateDummyForm(form); // Close disposes the dummy form
Task.Delay(TimeSpan.FromMilliseconds(timeoutMillis)).ContinueWith((t) => { dummy.Close(); dummy.Dispose(); }, TaskScheduler.FromCurrentSynchronizationContext());
fsd.ShowDialog(dummy);
fsd.Dispose();
};
form.Controls.Add(btn);
Application.Run(form);
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句