C#窗体任务栏图标关于notifyIcon问题,看说明

来源:百度知道 编辑:UC知道 时间:2024/05/22 07:21:57
为了实现双击任务栏图标让主窗体显示出来,我在双击任务栏图标中写了如下代码:
this.ShowInTaskbar = true;
this.WindowState = FormWindowState.Normal;
但是有一个问题,(不关闭C#应用程序的前提下),当我进行别的操作后,(如,双击下我的电脑或者打开IE浏览器),当我再次双击任务栏图标时,此应用程序能够显示出来,但是在它IE浏览器的后面,我根本看不到它,只有让IE最小化了才能看到.我想实现的功能就是,当我双击任务栏图标时,它能够显示在一切应用程序的最上一层.如果我加上一条: this.TopMost = true;它会总是显示在最上一层了,我再打开一个IE,它会把IE遮住了,也不行,怎么解决?

这个需要调用本地API 使他弹出来 而不是让他一直置顶
//在类中调用Windows API
//设置此窗体句柄的窗体为活动窗体
[System.Runtime.InteropServices.DllImport("user32.dll", CharSet = System.Runtime.InteropServices.CharSet.Auto, ExactSpelling = true)]
public static extern IntPtr GetForegroundWindow(); //获得当前活动窗体的句柄
[System.Runtime.InteropServices.DllImport("user32.dll", EntryPoint = "SetForegroundWindow")]
public static extern bool SetForegroundWindow(IntPtr hWnd);

//调用
IntPtr handle=Handle;
if (handle!= GetForegroundWindow()) //获取当前活动窗体
SetForegroundWindow(handle); //如果不是,强制把自己的设置为活动窗体

调用可以在Timer中运行,把Timer设置一个间隔值,随便
Timer一段时间就会去检查一遍.....如果自己没有被顶置,那么把自己顶置

if (this.WindowState == FormWindowState.Minimized)
{
this.WindowState = FormWindowState.Normal;
this.Focus();
}

关注