让 Winform 窗口悬浮的简单方式,不可思议的 TopMost 属性
2016-12-02 00:33
302 查看
很多次设置这个 TopMost 属性会莫名的不起作用,有时又可以。一直在想是为什么会这样?
后来多次尝试,发现这个属性必须在窗体某些其他属性后设置,比如在 Height、Width 这样的属性后。
看了下 Windows 窗体应用程序启动时,主窗体的启动事件将按照以下顺序引发:
Control.HandleCreated
Control.BindingContextChanged
Form.Load
Control.VisibleChanged
Form.Activated
Form.Shown
所以在最后一个事件 Shown 里设置这个 TopMost 应该是最可靠的:
private void Form1_Shown(object sender, EventArgs e)
{
this.TopMost = true;
}
注意:如果悬浮这个窗体是主窗体,还有要 Show 的子窗体,会出现子窗体被盖住的情况:
所以在 Show 出子窗体前,需要设置一下:
...
this.TopMost = false;
// 关闭子窗体后再设置 TopMost
this.TopMost = true;
后来多次尝试,发现这个属性必须在窗体某些其他属性后设置,比如在 Height、Width 这样的属性后。
看了下 Windows 窗体应用程序启动时,主窗体的启动事件将按照以下顺序引发:
Control.HandleCreated
Control.BindingContextChanged
Form.Load
Control.VisibleChanged
Form.Activated
Form.Shown
所以在最后一个事件 Shown 里设置这个 TopMost 应该是最可靠的:
private void Form1_Shown(object sender, EventArgs e)
{
this.TopMost = true;
}
注意:如果悬浮这个窗体是主窗体,还有要 Show 的子窗体,会出现子窗体被盖住的情况:
所以在 Show 出子窗体前,需要设置一下:
...
this.TopMost = false;
// 关闭子窗体后再设置 TopMost
this.TopMost = true;
相关文章推荐
- 以线程安全的方式设置WinForm窗体控件的属性
- WinForm:一个登陆窗体引发的问题系列(一):最简单的登陆窗口
- 【java简单的注解使用方式】用注解代替设置属性方法
- 七.Spring的属性注入的方式-简单String类型
- iOS切圆角的方式 第一种方法:通过设置layer的属性 最简单的一种,但是很影响性能,一般在正常的开发中使用很少. UIImageView *imageView = [[UIImag
- 关于窗口中TopMost属性的一个问题
- 简单说明C# get set属性以及使用方式
- 关于socket用winform实现简单通信 大牛可绕道 初学者可以看看 我做的时候把客户端窗口隐藏了 大家可以自己改一下
- 简单的WINFORM窗口,体验WINFORM带来的快感
- Hibernate 实体类注解 Entity方式5、@Basic(fetch=FetchType,optional=true) 可选 @Basic表示一个简单的属性到数据库表的字段的映射,对于没有
- Flex 4 窗口间的值传递【最简单方式】
- Winform窗体传值的几种方式(属性赋值,委托,事件)
- 使用按钮控制以何种方式打开新窗口的属性介绍
- Winform遍历窗口的所有控件(两种方式)
- C# WinForm窗体的TopMost属性设置为true时,多次点击窗体弹出事件,只会弹出一个窗体
- C# 日记5--Winform属性窗口
- 使用按钮控制以何种方式打开新窗口的属性介绍
- winform中Dock、Anchor属性的设置(简单实用)
- 第8讲-原型的属性扩展及简单继承的方式
- 用FXML同时显示两个JavaFX窗口(最简单的方式)