WPF:窗体置顶
1、设置窗体TopMost属性
private DispatcherTimer timer; public Window1()
{
InitializeComponent();
Loaded += new RoutedEventHandler(Window1_Loaded);
} void Window1_Loaded(object sender, RoutedEventArgs e)
{
timer = new DispatcherTimer();
timer.Interval = TimeSpan.FromSeconds();
timer.Tick += timer1_Tick;
timer.Start(); //.... //timer.Stop();
} private void timer1_Tick(object sender, EventArgs e)
{
//定时处理 this.TopMost = true;
}
2、设置窗体Owner
WindowInteropHelper mianHanel = new WindowInteropHelper(MainWindow.Current);
WindowInteropHelper vedioWin = new WindowInteropHelper(this);
WindowInteropHelper FrameWin = new WindowInteropHelper(FrameWindow);
FrameWin.Owner = IntPtr.Zero;
mianHanel.Owner = vedioWin.Handle;
vedioWin.Owner = FrameWin.Handle;
3、通过函数设置
1)SetWindowPos:该函数将指定的窗口设置到Z序的特定位置。如:SetWindowPos(_process.MainWindowHandle, 0, 0, 0, 0, 0, 1 | 2);//4
https://msdn.microsoft.com/zh-tw/library/windows/desktop/ms633545(v=vs.85).aspx
2)BringWindowToTop:该函数将指定的窗口设置到Z序的顶部。如果窗口为顶层窗口,则该窗口被激活;如果窗口为子窗口,则相应的顶级父窗口被激活。调用这个函数类似于调用SetWindowPos函数来改变窗口在Z序中的位置,但是BringWindowToTop函数并不能使一个窗口成为顶层窗口。
3)SetForegroundWindow:如果应用程序不在前台中而想设置在前台中,可以调用该函数。
注:如果在外软件中以进程的方式启动该软件,还是未置顶则考虑在该软件自身运行时设置SetForegroundWindow。
实例:
Process process = RuningInstance();
if (process == null)
{
// process.Kill();
_logger.Info("打开黑板");
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new FrmBlackbord());
} else
{
_logger.Info("激活黑板");
SetForegroundWindow(process.MainWindowHandle);
try
{
int reuslt = ;
if (IsZhangj != null)
{
switch (args[])
{
case "-n":
reuslt = HandleRunningInstance(process, "新建文件&" + BlackDataService.NewFilepath);
} }
else
{
// MessageBox.Show("应用程序已经在运行中。。。");
reuslt = HandleRunningInstance(process, "激活窗口");
}
if (reuslt == )
{
//process.Kill();
//_logger.Info("重新打开黑板"); }
}
catch (Exception ex)
{
_logger.Debug(ex.Message + ":" + ex.StackTrace);
}
//System.Threading.Thread.Sleep(1000);
//System.Environment.Exit(1);
} } private static Process RuningInstance()
{
Process currentProcess = Process.GetCurrentProcess();
Process[] Processes = Process.GetProcessesByName(currentProcess.ProcessName);
_logger.Info(currentProcess.ProcessName); foreach (Process process in Processes)
{
if (process.Id != currentProcess.Id)
{
if (Assembly.GetExecutingAssembly().Location.Replace("/", "\\") == currentProcess.MainModule.FileName)
{ return process;
}
}
}
return null;
}
WPF:窗体置顶的更多相关文章
- C#或者WPF中让某个窗体置顶
原文:C#或者WPF中让某个窗体置顶 前记:在工作中有个需求,要求不管到那个界面,我必须让一个浮动条(其实是个窗体)置顶. 我用wpf,因为有之前有好几个界面已经设置成topmost了,所以在这几个界 ...
- winform窗体置顶
winform窗体置顶 金刚 winform 置顶 今天做了一个winform小工具.需要设置置顶功能. 网上找了下,发现百度真的很垃圾... 还是必应靠谱些. 找到一个可以链接. https://s ...
- C#控件、窗体置顶
//控件置于顶层和底层 panel.BringToFront();//置于顶层 panel.SendToBack();//置于底层 //窗体置顶 TopMost = true;
- WPF Popup 置顶问题
原文 WPF Popup 置顶问题 问题: 使用wpf的popup,当在popup中弹出MessageBox或者打开对话框的时候,popup总是置顶,并遮住MessageBox或对话框. 解决: 写如 ...
- Delphi窗体置顶及失去焦点后取得焦点
unit u_FrmTopMostActive; interface uses Winapi.Windows; implementation // 窗体置顶 procedure SetXwForegr ...
- Creating Dialogbased Windows Application (3) / 创建基于对话框的Windows应用程序(三)Checkbox的应用、窗体置顶、设置图标 / VC++, Windows
创建基于对话框的Windows应用程序(三) —— Checkbox的应用.窗体置顶.设置图标 上一节创建的窗体应用程序中,我们用到了Button和StaticText这两个控件.这一节中我们将学习使 ...
- 019 [工具软件]窗体置顶 DeskPins
DeskPins:Windows下将任何窗体置顶的工具 官方主页:https://efotinis.neocities.org/deskpins/index.html 官方下载的是一个exe安装包,用 ...
- WPF主窗体调用 User32的SetWindowPos 设置窗体置顶会导致与其他窗体抢夺焦点的问题
最近发现:自己开发的窗体应用,在二级弹窗或者提示框弹出的时候,交替点击窗体和窗体外(相当于窗体交替的获取焦点和失去焦点),都会导致其他的应用一闪一闪的. 经过排查,是由于该窗体由于部分因素考虑,用了 ...
- WPF popup置顶
在程序写一个popup发现他会在置顶,在网上找了两大神代码http://www.cnblogs.com/Leaco/p/3164394.html http://blog.csdn.net/baijin ...
随机推荐
- Enum 绑定到 RadioButton
参考 这篇文章. 和 http://www.cnblogs.com/626498301/archive/2012/05/22/2512958.html
- 一个前端html模板处理引擎(javascript) - pure
做后台开发(java/python)的同学开发web应用,对于前端页面生成技术并不陌生,像jsp,freemark等.开发UGC类型的互联网站,因为要SEO友好,所以一般都会在后台用模板引擎直接生成好 ...
- 解决:warning LNK4098: 默认库“MSVCRT”与其他库的使用冲突;找到 MSIL .netmodule 或使用 /GL 编译的模块;正在。。;LINK : warning LNK4075: 忽略“/INCREMENTAL”(由于“/LTCG”规范)
参考资料: http://blog.csdn.net/laogaoav/article/details/8544880 http://stackoverflow.com/questions/18612 ...
- ios-chart 不支持渐变的底色 --- 后面支持了渐变
https://github.com/danielgindi/ios-charts/issues/186 后话,最近库更新了,可以支持渐变色
- Java基础之一组有用的类——为标记定义自己的模式(ScanString)
控制台程序. Scanner类提供了一种方式,用来指定如何识别标记.这需要使用next()方法的两个重载版本.其中的一个版本接受Pattern类型的参数.另一个版本接受String类型的参数,用来指定 ...
- 《30天自制操作系统》04_day_学习笔记
harib01a: P65 用C语言实现内存写入 实现一个往黑画面上写入东西的函数 修改了naskfunc.nas中的内容 在bootpack.c中 用write_mem8()函数将VRMA中全部写入 ...
- linux 内核模块ko入门
http://blog.csdn.net/elfylin/article/details/5908265
- Sublime 不自动打开上次未关闭的文件 设置方法
{ "font_size": 17, "hot_exit": false, "remember_open_files": false, &q ...
- SLF4J环境变量配置
因部分程序需要,需要把SLF4J加入到环境变量中. 添加位置:CLASSPATH 添加信息如下: C:\slf4j-1.7.19\slf4j-nop-1.7.19.jar;
- hduoj 4708 Rotation Lock Puzzle 2013 ACM/ICPC Asia Regional Online —— Warmup
http://acm.hdu.edu.cn/showproblem.php?pid=4708 Rotation Lock Puzzle Time Limit: 2000/1000 MS (Java/O ...