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:窗体置顶的更多相关文章

  1. C#或者WPF中让某个窗体置顶

    原文:C#或者WPF中让某个窗体置顶 前记:在工作中有个需求,要求不管到那个界面,我必须让一个浮动条(其实是个窗体)置顶. 我用wpf,因为有之前有好几个界面已经设置成topmost了,所以在这几个界 ...

  2. winform窗体置顶

    winform窗体置顶 金刚 winform 置顶 今天做了一个winform小工具.需要设置置顶功能. 网上找了下,发现百度真的很垃圾... 还是必应靠谱些. 找到一个可以链接. https://s ...

  3. C#控件、窗体置顶

    //控件置于顶层和底层 panel.BringToFront();//置于顶层 panel.SendToBack();//置于底层 //窗体置顶 TopMost = true;

  4. WPF Popup 置顶问题

    原文 WPF Popup 置顶问题 问题: 使用wpf的popup,当在popup中弹出MessageBox或者打开对话框的时候,popup总是置顶,并遮住MessageBox或对话框. 解决: 写如 ...

  5. Delphi窗体置顶及失去焦点后取得焦点

    unit u_FrmTopMostActive; interface uses Winapi.Windows; implementation // 窗体置顶 procedure SetXwForegr ...

  6. Creating Dialogbased Windows Application (3) / 创建基于对话框的Windows应用程序(三)Checkbox的应用、窗体置顶、设置图标 / VC++, Windows

    创建基于对话框的Windows应用程序(三) —— Checkbox的应用.窗体置顶.设置图标 上一节创建的窗体应用程序中,我们用到了Button和StaticText这两个控件.这一节中我们将学习使 ...

  7. 019 [工具软件]窗体置顶 DeskPins

    DeskPins:Windows下将任何窗体置顶的工具 官方主页:https://efotinis.neocities.org/deskpins/index.html 官方下载的是一个exe安装包,用 ...

  8. WPF主窗体调用 User32的SetWindowPos 设置窗体置顶会导致与其他窗体抢夺焦点的问题

    最近发现:自己开发的窗体应用,在二级弹窗或者提示框弹出的时候,交替点击窗体和窗体外(相当于窗体交替的获取焦点和失去焦点),都会导致其他的应用一闪一闪的. 经过排查,是由于该窗体由于部分因素考虑,用了  ...

  9. WPF popup置顶

    在程序写一个popup发现他会在置顶,在网上找了两大神代码http://www.cnblogs.com/Leaco/p/3164394.html http://blog.csdn.net/baijin ...

随机推荐

  1. javascript实例学习之八——无缝切换效果

    无缝切换在网站的很多地方都有涉及,比如轮播图等. 基本思路: 1)将可视窗当前的元素复制,依次添加为ul中的子元素 2)改变ul整体的left取值(负的窗口值),动画缓动至想要的位置 3)将原视窗(已 ...

  2. swift 异步加载图片

    import UIKit @UIApplicationMain class AppDelegate: UIResponder, UIApplicationDelegate { var window: ...

  3. mini install centOS log

    no ifconfig yum install net-tools ------------------------------------------------------------------ ...

  4. Java基础之处理事件——应用程序中的语义事件监听器(Sketcher 5 with element color listeners)

    控制台程序. 为了标识元素的类型,可以为菜单已提供的4中元素定义常量,用作ID.这有助于执行菜单项监听器的操作,还提供了一种标识颜色类型的方式.我们会累积许多应用程序范围的常量,所以把它们定义为可以静 ...

  5. Velocity(3)——字面值和转义

    货币符号: $是美元的符号,在文本中出现的"$2.5"这样的字符串,是不会被Velocity解释为一个变量或者一个属性的,因为2.5或者2或者5都不是一个VTL标识符. 转义: 假 ...

  6. html 标签自己居中

    <div style="width: 200px; height: 200px; border: 1px solid red; margin: 0 auto;">< ...

  7. qsort函数用法

    qsort函数用法   qsort 功 能: 使用快速排序例程进行排序 用 法: void qsort(void *base, int nelem, int width, int (*fcmp)(co ...

  8. CentOS 7 安装Dukto(局域网通信工具)

    rmp包 http://download.opensuse.org/repositories/home:/colomboem/CentOS_7/x86_64/dukto-6.0-13.1.x86_64 ...

  9. poj: 1005

    简单题 #include <iostream> #include <stdio.h> #include <string.h> #include <stack& ...

  10. sql 索引创建

    --格式 --CREATE [索引类型] INDEX 索引名称--ON 表名(列名)--WITH FILLFACTOR = 填充因子值0~100--GO ----------------------- ...