WinForm 窗口保持在屏幕最前面

版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/zhouyingge1104/article/details/93653278

WinForm(C#)开发,有多个窗口,遇到的情况是,打开了窗口A,然后点A以外的其他地方,A就被最小化了。

现在要实现的效果是,窗口A打开后,点A以外的区域时,A保持在所有窗口的最前面,不隐藏。

网上查询一番,找到了比较简单的方法:设置窗体的TopMost属性为true.

https://stackoverflow.com/questions/683330/how-to-make-a-window-always-stay-on-top-in-net

这个方法对于一般情况有效。

不过如果打开了A之后,在A基础上再打开B,那么即便B设置了TopMost=true, 点击B以外的地方,B还是会最小化。

再次查询,这次找到了比较彻底的办法:

在打开窗体是的时候,在窗体的  Form.Show()方法中,把父窗体 this 作为参数放进去:

formTreatRecord = new FormTreatRecord();
formTreatRecord.Show(this);
formTreatRecord.Focus();

实测有效,这个无论点击哪个区域,该窗体始终在最前面。

C#和VB都有效。

参考:https://stackoverflow.com/questions/29698453/how-to-keep-a-form-on-top-of-others-in-vb-net

展开阅读全文

如何让无边框透明窗口保持在最前面

10-13

就是怎么做到:frameless && translucent && stay-on-top ==truernrn似乎在X11上可以做到,参见最下面的程序代码。rn另外,我已经试验过,采用win7的API,也能做到这点。rn请教如果要在winXP和macOS上实现,该如何做?rnrn用这个的话,可以无边框透明,但不能在最前。rn[code=C/C++]setAttribute(Qt::WA_TranslucentBackground,true);rnsetWindowFlags(Qt::WindowStaysOnTopHint);rnsetWindowFlags(Qt::FramelessWindowHint);[/code]rnrn用这个的话,能在最前,又不能透明,背景是黑的。rn[code=C/C++]setAttribute(Qt::WA_TranslucentBackground,true);rnsetWindowFlags(Qt::FramelessWindowHint);rnsetWindowFlags(Qt::WindowStaysOnTopHint);rn[/code]rnrn现在的问题是,[color=#FF0000]有什么办法可以在不使用Qt::FramelessWindowHint的情况下,做到透明[/color]。rn以下的代码也不行,背景仍然是黑的。rnrn[code=C/C++]#include rnrnclass Widget : public QWidget rnpublic:rn Widget() : QWidget() rn setWindowFlags(windowFlags()|Qt::WindowStaysOnTopHint);rn setAttribute(Qt::WA_TranslucentBackground,true);rn //QPalette pal = palette();rn //pal.setColor(QPalette::Background, QColor (0, 0 , 0, 20));rn //setPalette(pal);rn rnprotected:rn void paintEvent(QPaintEvent *pe) rn QPainter p(this);rn p.setBrush(Qt::red);rn p.setRenderHint(QPainter::Antialiasing);rn p.drawEllipse(rect().adjusted(50,50,-50,-50));rn rn void resizeEvent(QResizeEvent *re) rn setMask(rect());rn rn;rnrnint main(int argc, char **argv) rn QApplication app(argc, argv);rn Widget w;rn w.show();rn return app.exec();rn[/code] 论坛

没有更多推荐了,返回首页