小编Ste*_*les的帖子

WPF窗口应该是本机所有者窗口的模态,但不是

我在WPF项目中有以下C#代码:

private static void RunConfig(string owner)  
{  
    long ownerHandle;  
    var settingsWindow = new SettingsWindow();  
    if (long.TryParse(owner, out ownerHandle))  
    {  
        WindowInteropHelper helper = new WindowInteropHelper(settingsWindow);  
        helper.Owner = new IntPtr(ownerHandle);  
    }  
    settingsWindow.ShowDialog();  
}
Run Code Online (Sandbox Code Playgroud)

SettingsWindow对所有者窗口没有正确的模态(即,当SettingsWindow仍处于打开状态时,我可以专注于,与所有者窗口交互,甚至关闭所有者窗口).我究竟做错了什么?

对于上下文,此代码是屏幕保护程序的一部分,所有者窗口是控制面板屏幕保护程序选择窗口(通过命令行参数传递句柄以用作所有者).我知道IF语句正在评估true并正确解析句柄.

我已经使用也尝试SetWindowLongPtr从方法user32.dll(编译为64位,因此不使用SetWindowLong),其被简要地描述在这里,并且在使用中所示此处.此方法适用于WinForms,但似乎在WPF中不起作用.帮助我Obi-Wan Kenobi,你是我唯一的希望.

c# wpf native window owner

3
推荐指数
1
解决办法
2149
查看次数

标签 统计

c# ×1

native ×1

owner ×1

window ×1

wpf ×1