在我的WPF/C#应用程序中,我使用如下代码创建了一个对话框窗口:
Window dialog = new MyDialog() as Window;
dialog.Owner = Window.GetWindow(this);
dialog.ShowDialog();如何将对话框所有者设置为另一个应用程序窗口的hWnd?
我需要的功能只是有“所有者窗口”被阻止,而对话框是可见的。
发布于 2012-12-13 00:33:58
我已经找到了一个解决方案来阻止“所有者窗口”。代码的第一部分来自Douglas answer,其余部分使用对WinAPI EnableWindow方法的调用:
Window dialog = new MyDialog();
WindowInteropHelper wih = new WindowInteropHelper(dialog);
wih.Owner = ownerHwnd;
//Block input to the owner
Windows.EnableWindow(ownerHwnd, false);
EventHandler onClosed = null;
onClosed = (object sender, EventArgs e) =>
{
//Re-Enable the owner window once the dialog is closed
Windows.EnableWindow(ownerHwnd, true);
(sender as Window).closed -= onClosed;
};
dialog.Closed += onClosed;
dialog.WindowStartupLocation = WindowStartupLocation.CenterOwner;
dialog.ShowActivated = true;
dialog.Show();
//Import the EnableWindow method
[DllImport("user32.dll")]
[return: MarshalAs(UnmanagedType.Bool)]
static extern bool EnableWindow(IntPtr hWnd, bool bEnable);发布于 2012-12-12 23:25:58
使用WindowInteropHelper
Window dialog = new MyDialog();
WindowInteropHelper wih = new WindowInteropHelper(dialog);
wih.Owner = ownerHwnd;
dialog.ShowDialog();https://stackoverflow.com/questions/13842869
复制相似问题