日期:2014-05-18  浏览次数:21008 次

能否让某个窗口只在指定的窗口之上?
在windows资源管理器中复制文件时,会用一个窗体显示复制文件的"进度",在win7中,我们可以看到这样一个特性:
该进度窗口始终位于资源管理器前面,但切换到其他窗口时(比如其他资源管理器/word等等),该窗口又在其他窗口后面,换句话说,该窗口"仅仅"挡住了对应的资源管理器.
在C#中,
Form1 myForm=new Form1();myForm.Show();
如果Form1的TopMost=true;,该窗口会在所有窗口前面,包括输入法,如果设置为false,点主窗口时,该窗口会被主窗口挡住,能否有一个方法,实现类似"复制进度"窗口的效果,即Form1始终在主窗口前面,但切换到其他应用程序时,又不会挡住其他窗口.

------解决方案--------------------
myForm.ShowDialog() 这效果行不
------解决方案--------------------
我之前也碰到了这种需求,最后用MDI做的,直接调用的API。
缺点就是MDI中的子窗口只能在父窗口的区域内显示出来,无法在窗口外面显示。
一直没找到更好更简便的解决方案。
------解决方案--------------------
Form2 frm = new Form2();
frm.Owner = this;
frm.Show();
------解决方案--------------------
myForm.Show(this);