C# 如何将窗口置于顶部?

C# 如何将窗口置于顶部?,c#,internet-explorer,modal-dialog,winapi,C#,Internet Explorer,Modal Dialog,Winapi,我创建了这段代码,将InternetExplorer窗口置于顶部 public void avtivateIEWin(IntPtr win){ int foregrRes = SetForegroundWindow(win); log("foregrRes:" + foregrRes); ShowWindowAsync(win, SW_SHOW); BringWindowToTop(win); SetActi

我创建了这段代码,将InternetExplorer窗口置于顶部

    public void avtivateIEWin(IntPtr win){
        int foregrRes = SetForegroundWindow(win);
        log("foregrRes:" + foregrRes);
        ShowWindowAsync(win, SW_SHOW);
        BringWindowToTop(win);
        SetActiveWindow(win);
        SwitchToThisWindow(win, true); 
        SetFocus(win); 
}

(我的程序的目的是模拟Alt-Tab行为,在我的应用程序窗口(即IE窗口)之间切换)

是的..我在这里包括了所有可能的函数。。。如果我只有一个IE窗口,它就可以工作了

但是当我有两个IE窗口时,其中一个是用showModalDialog/showModlessDialog函数打开的——它不工作

这看起来很奇怪,但当我从模式窗口切换到其父窗口时,焦点从模式窗口切换到父窗口,但模式窗口仍然在顶部

请告知


谢谢

模态窗口就是这样工作的——当父窗口可见时,它们将始终显示在父窗口上方,并且无法更改此行为

MSDN还有更多内容,特别提到:

拥有的窗口在z顺序中始终高于其所有者


好啊我明白了…然后我可以使用另一种方法-最小化所有模式窗口以显示父窗口。这种方法有什么缺点吗?或者如果你真的不想要模态窗口,就不要打开模态窗口。如果希望模态窗口像非模态窗口一样工作,为什么要使用模态窗口?