C#ActiveX - 如何使弹出对话框(windows.Forms.Form)始终位于浏览器之上(IE8)

时间:2014-03-17 03:28:17

标签: c# forms activex showdialog

我使用C#编写ActiveX与其他基于浏览器的系统进行通信b,由于现有的体系结构,它需要在其他线程中弹出一个对话框。目前的行为是,如果我点击浏览器标题,对话框可以隐藏在后面。是否可以将弹出对话框始终保持在浏览器(IE8)的顶部?提前谢谢。

public int operation()
{   
    ....  
    MyMsgBox myMsgBox = new MyMsgBox(message,title);   
    evt = System.Threading.AutoResetEvent(false);  
    Thread showDialogThread = new Thread(ShowMsgDialog);  
    ShowDislogThread.SetApartmentState(System.Threading.ApartmentState.STA);
    showDialogThread.Start(myMsgBox);
    System.Threading.WaitHanle.WaitAll(new System.Threading.WaitHandle[] {evt});  
    ....
}

public void ShowMsgDialog(object requestObj)
{  
    MyMsgBox msgBox = (MyMsgbox)requestObj;  
    msgBox.showDialog();  
    evt.Set();  
}

Class MyMsgBox:Form  
{
    public MyMsgBox(string message, string title)
    {  
        //do initialization....  
    }  
}

我试图将TopMost of Form设置为'true',然后它将始终位于所有应用程序的顶部。它不符合要求,因为弹出窗口对话框只需要始终位于浏览器的顶部。感谢。

1 个答案:

答案 0 :(得分:0)

我不认为你想要的东西是可能的。

但是,您可以在所有页面上展开div,并在鼠标移动时设置和事件以在ActiveX对象上调用BringToFront。这应该可以解决问题。