C#或者WPF中让某个窗体置顶
前记:在工作中有个需求,要求不管到那个界面,我必须让一个浮动条(其实是个窗体)置顶。
我用wpf,因为有之前有好几个界面已经设置成topmost了,所以在这几个界面,我的浮动条会被遮挡。为了始终让浮动条在最顶端,我写了个简单的工具类。在前面已经设置成topmost的窗体的Window_Loaded中调用这个工具类里的方法实现了始终让浮动条置顶。 
工具类代码如下:
public class TopMostTool
{
    public static  int SW_SHOW = 5;
    public static  int SW_NORMAL = 1;
    public static  int SW_MAX = 3;
    public static  int SW_HIDE = 0;
    public static readonly IntPtr HWND_TOPMOST = new IntPtr(-1);    //窗体置顶
    public static readonly IntPtr HWND_NOTOPMOST = new IntPtr(-2);    //取消窗体置顶
    public const uint SWP_NOMOVE = 0x0002;    //不调整窗体位置
    public const uint SWP_NOSIZE = 0x0001;    //不调整窗体大小
    public bool isFirst = true;
    [DllImport("user32.dll")]
    public static extern bool SetWindowPos(IntPtr hWnd, IntPtr hWndInsertAfter, int x, int y, int cx, int cy, uint uFlags);
    [DllImport("user32.dll", EntryPoint = "ShowWindow")]
    public static extern bool ShowWindow(System.IntPtr hWnd, int nCmdShow);
    [DllImport("user32.dll")]
    FindWindow(string lpClassName,string lpWindowName);
    /// <summary>
    /// 在外面的方法中掉用这个方法就可以让浮动条(CustomBar)始终置顶
    /// CustomBar是我的程序中需要置顶的窗体的名字,你们可以根据需要传入不同的值
    /// </summary>
    public static void setTopCustomBar(){
        IntPtr CustomBar = FindWindow(null,"CustomBar");    //CustomBar是我的程序中需要置顶的窗体的名字
        if(CustomBar!=null){
            SetWindowPos(CustomBar, MainWindow.HWND_TOPMOST, 0, 0, 0, 0, MainWindow.SWP_NOMOVE | MainWindow.SWP_NOSIZE);
        }
    }
}这个类里的几个方法详解 
SetWindowPos方法详解请戳这里 
ShowWindow方法详解请戳这里 
FindWindow方法详解请戳这里 
写的比较粗糙,就当给自己做笔记!
C#或者WPF中让某个窗体置顶的更多相关文章
- Creating Dialogbased Windows Application (3) / 创建基于对话框的Windows应用程序(三)Checkbox的应用、窗体置顶、设置图标 / VC++, Windows
		创建基于对话框的Windows应用程序(三) —— Checkbox的应用.窗体置顶.设置图标 上一节创建的窗体应用程序中,我们用到了Button和StaticText这两个控件.这一节中我们将学习使 ... 
- winform窗体置顶
		winform窗体置顶 金刚 winform 置顶 今天做了一个winform小工具.需要设置置顶功能. 网上找了下,发现百度真的很垃圾... 还是必应靠谱些. 找到一个可以链接. https://s ... 
- C#控件、窗体置顶
		//控件置于顶层和底层 panel.BringToFront();//置于顶层 panel.SendToBack();//置于底层 //窗体置顶 TopMost = true; 
- Delphi窗体置顶及失去焦点后取得焦点
		unit u_FrmTopMostActive; interface uses Winapi.Windows; implementation // 窗体置顶 procedure SetXwForegr ... 
- 019 [工具软件]窗体置顶 DeskPins
		DeskPins:Windows下将任何窗体置顶的工具 官方主页:https://efotinis.neocities.org/deskpins/index.html 官方下载的是一个exe安装包,用 ... 
- WPF:窗体置顶
		1.设置窗体TopMost属性 private DispatcherTimer timer; public Window1() { InitializeComponent(); Loaded += n ... 
- WPF主窗体调用 User32的SetWindowPos 设置窗体置顶会导致与其他窗体抢夺焦点的问题
		最近发现:自己开发的窗体应用,在二级弹窗或者提示框弹出的时候,交替点击窗体和窗体外(相当于窗体交替的获取焦点和失去焦点),都会导致其他的应用一闪一闪的. 经过排查,是由于该窗体由于部分因素考虑,用了 ... 
- 让WPF的Popup不总置顶的解决方案
		使用WPF的Popup的时候会发现有一个问题,它总是会置顶,只要Popup的StayOpen不设置为False,它就一直呆在最顶端,挡住其他的窗口. 解决方案是继承Popup重新定义控件PopupEx ... 
- Python tkinter 副窗体置顶和取消置顶
		root = Tk() #置顶root.wm_attributes('-topmost',1) #取消置顶 root.wm_attributes('-topmost',0) 
随机推荐
- 解决安装mysql-connector-odbc-5.3.2 错误1918……不能载入安装或转换器库……的BUG
			还是在虚拟机Windows Server 2003上安装mysql-connector-odbc-5.3.2,装着装着就报错了,大致是"错误1918--不能载入安装或转换器库--" ... 
- 初识Visual Studio Code     一.使用Visual Studio Code 开发C# 控制台程序
			原文:初识Visual Studio Code 一.使用Visual Studio Code 开发C# 控制台程序 1. 安装.NET Core 安装包下载地址:https://www.microso ... 
- 【u250】manhattan
			Time Limit: 1 second Memory Limit: 64 MB [问题描述] 混乱的城市已经变得无法控制.大楼随处乱造,城市的布局也是一片混乱.市长决定要结束这种局面,兵器并且想建造 ... 
- 【48.51%】【poj 1611】The Suspects
			Time Limit: 1000MS Memory Limit: 20000K Total Submissions: 34447 Accepted: 16711 Description Severe ... 
- GitHub项目协作基本步骤                                                    分类:            C_OHTERS             2013-09-23 21:31    690人阅读    评论(0)    收藏
			1.查找某个项目,然后Fork 2.打开GitHub For Windows,发现刚才Fork的项目 3.对着项目点击Clone,将之复制至本地 4.使用Eclipse等进行开发,如新增一个文件 5. ... 
- NET WinForm 开发所见即所得的 IDE 开发环境
			Github 开源:使用 .NET WinForm 开发所见即所得的 IDE 开发环境(Sheng.Winform.IDE)[2.源代码简要说明] GitHub:https://github.co ... 
- mysql查询字段所在表
			use information_schema;select * from columns where column_name='字段名' ; 
- [Linux] Use find to search for filename patterns
			Learn how to use find to identify filenames matching specified patterns. We'll use find to identify ... 
- Smarty3.1.8 安装
			应用环境:Winsows7 IIS + PHP5.5.12 + Smarty3.1.8 1. IIS 及 PHP 安装,参照<php手册>,这里不做细表. 2. 假定应用目录为 C:\in ... 
- Snmp常用oid
			http://blog.csdn.net/youngqj/article/details/7311849 系统参数(1.3.6.1.2.1.1) OID 描述 备注 请求方式 .1.3.6.1.2 ... 
