如何让托盘闪烁?高手指点 如何让托盘进行闪烁,类似于QQ的效果 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 实际上是2个图标,然后用个timer让它不停的换可以试试用gif可以不 zhangci226(三只熊熊) ( ) 信誉:99 2006-07-03 15:16:00 得分: 0 实际上是2个图标,然后用个timer让它不停的换可以试试用gif可以不 agree 不可能用gif,在系统托盘中显示的是icon,闪烁的原因是icon进行切换造成。你自己用timer或者其他之类的,去定时修改notifyicon的图标即可。 是的,我在写消息提醒的时候,就是用几对不同的ICON实现各种提示的用Timer 用几个图标代的,可以加一个timer处理 using System.Runtime.InteropServices;public partial class Form1 : Form{ [System.Runtime.InteropServices.DllImport("user32.dll")] static extern bool FlashWindow(IntPtr hwnd, bool bInvert); private void timer1_Tick(object sender, EventArgs e) { FlashWindow(Handle, true); } private void Form1_Load(object sender, EventArgs e) { timer1.Interval = 5000; timer1.Start(); }} 用timer就可以了楼上正解 是两个ICON ,用 TIMER 来控制。 private Icon m_Icon1;private Icon m_Icon2;private bool m_bFlag;private bool m_bShowWnd;修改Form1()函数为:public Form1(){//// Required for Windows Form Designer support//InitializeComponent();//// TODO: Add any constructor code after InitializeComponent call//m_bFlag=true;m_bShowWnd=true;try{m_Icon1 = new Icon("Icon1.ico");//导入图标文件m_Icon2 = new Icon("Icon2.ico");}catch ( Exception e ){MessageBox.Show("Error " + e.Message,"Animate Tray - Error");menuItem2.Enabled = false;menuItem3.Enabled = false;}}添加menuItem1、menuItem2、menuItem3、m_trayIcon的Click事件,消息处理函数如下:private void menuItem1_Click(object sender, System.EventArgs e){timer1.Start();//打开计时器}private void menuItem2_Click(object sender, System.EventArgs e){timer1.Stop();//停止计时器}private void menuItem3_Click(object sender, System.EventArgs e){Application.Exit();//退出应用程序}private void m_trayIcon_Click(object sender, System.EventArgs e){if(m_bShowWnd == true)//隐藏主界面{this.Visible = false;m_bShowWnd = false;}else//显示主界面{this.Visible = true;m_bShowWnd = true;}}最后还要添加timer1的Tick()函数:private void timer1_Tick(object sender, System.EventArgs e){if ( m_Icon1 != null && m_Icon2 != null ) //如果两个图标文件都被正确载入{//只要timer1被启动,则在两个图标之间不断进行选择变换,实现动画效果if ( m_bFlag == true ){m_trayIcon.Icon = m_Icon2;m_bFlag = false;}else{m_trayIcon.Icon = m_Icon1;m_bFlag = true;}}} 实际上是2个icon在timer事件里不停的换if(this.notifyIcon1.Icon!=ico){ this.notifyIcon1.Icon=ico1;}else{ this.notifyIcon1.Icon = ico; }这里ico和ico1分别是2个不同图标 是啊,timer控制的两个图标〉。。 这不是很容易么,切换就行,gif也行,还可以做一个左右摇摆的图形也行,怎地都行。 不可能用gif,在系统托盘中显示的是icon,闪烁的原因是icon进行切换造成。你自己用timer或者其他之类的,去定时修改notifyicon的图标即可。 另一种思路可以用visible设置闪烁的效果在timer1_Tick下if (this.notifyIcon1.Visible) { this.notifyIcon1.Visible = false; } else { this.notifyIcon1.Visible = true; } 如果不想自己写。去www.codeproject.com找别人写的控件,可以做到。 正则表达式"纽约{1}|芝加哥{1}|迈阿密{1}|匹兹堡{1})”为什么要写一个)? 数据库连接 可选参数跟默认参数是一回事吗? 取table中的数据! 文件夹大写字母,全部转换成小定字母 控件不见了!!!!!!! 紧急求助,页面无法显示,在线等待 关于.NET制作安装程序的问题! 弱弱的问:怎么实现指针 送分题 VS2003 升级到 VS2005 的问题..100分求一解 高手请进
可以试试用gif可以不
实际上是2个图标,然后用个timer让它不停的换
可以试试用gif可以不
agree
public partial class Form1 : Form
{
[System.Runtime.InteropServices.DllImport("user32.dll")]
static extern bool FlashWindow(IntPtr hwnd, bool bInvert);
private void timer1_Tick(object sender, EventArgs e)
{
FlashWindow(Handle, true);
} private void Form1_Load(object sender, EventArgs e)
{
timer1.Interval = 5000;
timer1.Start(); }
}
楼上正解
private Icon m_Icon2;
private bool m_bFlag;
private bool m_bShowWnd;修改Form1()函数为:public Form1()
{
//
// Required for Windows Form Designer support
//
InitializeComponent();
//
// TODO: Add any constructor code after InitializeComponent call
//
m_bFlag=true;
m_bShowWnd=true;try
{
m_Icon1 = new Icon("Icon1.ico");//导入图标文件
m_Icon2 = new Icon("Icon2.ico");
}
catch ( Exception e )
{
MessageBox.Show("Error " + e.Message,"Animate Tray - Error");
menuItem2.Enabled = false;
menuItem3.Enabled = false;
}
}添加menuItem1、menuItem2、menuItem3、m_trayIcon的Click事件,消息处理函数如下:
private void menuItem1_Click(object sender, System.EventArgs e)
{
timer1.Start();//打开计时器
}private void menuItem2_Click(object sender, System.EventArgs e)
{
timer1.Stop();//停止计时器
}private void menuItem3_Click(object sender, System.EventArgs e)
{
Application.Exit();//退出应用程序
}private void m_trayIcon_Click(object sender, System.EventArgs e)
{
if(m_bShowWnd == true)//隐藏主界面
{
this.Visible = false;
m_bShowWnd = false;
}
else//显示主界面
{
this.Visible = true;
m_bShowWnd = true;
}
}
最后还要添加timer1的Tick()函数:private void timer1_Tick(object sender, System.EventArgs e)
{
if ( m_Icon1 != null && m_Icon2 != null ) //如果两个图标文件都被正确载入
{
//只要timer1被启动,则在两个图标之间不断进行选择变换,实现动画效果
if ( m_bFlag == true )
{
m_trayIcon.Icon = m_Icon2;
m_bFlag = false;
}
else
{
m_trayIcon.Icon = m_Icon1;
m_bFlag = true;
}
}
}
{
this.notifyIcon1.Icon=ico1;
}
else
{
this.notifyIcon1.Icon = ico;
}这里ico和ico1分别是2个不同图标
可以用visible设置闪烁的效果
在timer1_Tick下
if (this.notifyIcon1.Visible)
{
this.notifyIcon1.Visible = false;
}
else
{
this.notifyIcon1.Visible = true;
}