Winform托盤NotifyIcon使用(類似QQ消息提示)
概述:在做cti的過程中,需要在來電的時候在客戶端彈出對應的客戶信息,所以需要做一個托盤的客戶端程序運行,當有來電的時候通過托盤圖標的閃動(當然也可以加些音效)來提示坐席人員。這里我使用了NotifyIcon控件實現,主要步驟如下:
第一步:在工具箱中找到NotifyIcon控件,將其拖入設計版面中,如圖:
第二步:設置相應的屬性,如圖:
Icon表示在托盤顯示的圖片
Text表示鼠標移上去的相應提示
其他的屬性這里就不詳細說明了,具體用的時候可以去百度一下。
第二步:設置事件,本人這里只用了click事件,當然也可以使用別的事件,看個人需求而定,代碼:
this.icoThread.Abort();//這是在之后定義的一個讓托盤圖標閃動的線程,當用戶點擊后停止閃動
this.notifyIcon1.Icon = new Icon("ico/c.ico");//將初始化為原來沒有閃動的圖標
this.Visible = true;//彈出MainForm
this.WindowState = FormWindowState.Maximized;//最大化
第三步:定義閃動的線程,代碼:
while (true)
{
this.notifyIcon1.Icon = new Icon("ico/bw.ico");
Thread.Sleep(100);
this.notifyIcon1.Icon = new Icon("ico/c.ico");
Thread.Sleep(100);
}
這里就是不斷的去交替兩個圖標即可,本人項目中用的是一個黑白的和一個彩色的,這樣看上去就是閃動效果了。這個線程的Abort時在第二步中click事件中,開始閃動根據之前的概述應該在得到來電的時候(得到來電具體的說明這里不說),當然根據每個人的不同需求可以將其放在不同的地方啟動,比如在socket編程中得到消息的時候啟動等。
第四步:在winform窗體最小化的時候展示出notifyicon控件,代碼:
private void MainForm_SizeChanged(object sender, EventArgs e)
{
if (this.WindowState == FormWindowState.Minimized)
{
this.Hide();//隱藏本窗體
this.notifyIcon1.Visible = true;//展示出notifyicon控件
}
}
這樣就簡單的實現了托盤的閃動效果了。