WPF 托盤閃爍

?WPF 托盤閃爍

控件名:NotifyIcon

作者:WPFDevelopersOrg ?- 弈虎、驚鏵

原文鏈接:? ?https://github.com/WPFDevelopersOrg/WPFDevelopers

  • 框架使用大于等于.NET40

  • Visual Studio 2022

  • 項目使用 MIT 開源許可協議。

  • 接著上一篇基礎托盤。

  • 新增如下:

    • 增加屬性TwinkInterval托盤圖標閃爍間隔默認500msIsTwink = true 開啟閃爍。

    • 設計器時不顯示托盤。

  • Nuget 最新[1]Install-Package WPFDevelopers 1.0.9.2-preview

  • Nuget 最新[2]Install-Package WPFDevelopers..Minimal 3.2.8.2-preview

1)托盤閃爍代碼如下:

///?<summary>///?托盤圖標閃爍間隔///?</summary>public?static?readonly?DependencyProperty?TwinkIntervalProperty?=?DependencyProperty.Register("TwinkInterval",typeof(TimeSpan),?typeof(NotifyIcon),?new?PropertyMetadata(TimeSpan.FromMilliseconds(500),?OnTwinkIntervalChanged));///?<summary>///?托盤圖標是否開啟閃爍///?</summary>public?static?readonly?DependencyProperty?IsTwinkProperty?=?DependencyProperty.Register("IsTwink",?typeof(bool),?typeof(NotifyIcon),?new?PropertyMetadata(false,?OnIsTwinkChanged));private?static?void?OnIsTwinkChanged(DependencyObject?d,?DependencyPropertyChangedEventArgs?e){if?(d?is?NotifyIcon?trayService){var?notifyIcon?=?(NotifyIcon)d;if?(notifyIcon.Visibility?!=?Visibility.Visible)?return;if?((bool)e.NewValue){if?(notifyIcon._dispatcherTimerTwink?==?null){notifyIcon._dispatcherTimerTwink?=?new?DispatcherTimer{Interval?=?notifyIcon.TwinkInterval};notifyIcon._dispatcherTimerTwink.Tick?+=?notifyIcon.DispatcherTimerTwinkTick;}notifyIcon._tempIconHandle?=?notifyIcon._hIcon;notifyIcon._dispatcherTimerTwink.Start();}else{notifyIcon._dispatcherTimerTwink?.Stop();notifyIcon._dispatcherTimerTwink.Tick?-=?notifyIcon.DispatcherTimerTwinkTick;notifyIcon._dispatcherTimerTwink?=?null;notifyIcon._iconHandle?=?notifyIcon._tempIconHandle;notifyIcon.ChangeIcon(false,?notifyIcon._iconHandle);notifyIcon._tempIconHandle?=?IntPtr.Zero;}}}private?static?void?OnTwinkIntervalChanged(DependencyObject?d,?DependencyPropertyChangedEventArgs?e){if?(d?is?NotifyIcon?trayService){var?notifyIcon?=?(NotifyIcon)d;notifyIcon._dispatcherTimerTwink.Interval?=?(TimeSpan)e.NewValue;}}

2)設計器時不顯示托盤代碼如下:

if?(DesignerHelper.IsInDesignMode?==?true)?return?false;#region?是否設計時模式public?class?DesignerHelper{private?static?bool??_isInDesignMode;public?static?bool?IsInDesignMode{get{if?(!_isInDesignMode.HasValue){_isInDesignMode?=?(bool)DependencyPropertyDescriptor.FromProperty(DesignerProperties.IsInDesignModeProperty,typeof(FrameworkElement)).Metadata.DefaultValue;}return?_isInDesignMode.Value;}}}#endregion

3)使用托盤代碼如下:

<wpfdev:NotifyIcon?Title="WPF開發者"?Name="WpfNotifyIcon"><wpfdev:NotifyIcon.ContextMenu><ContextMenu><MenuItem?Header="托盤消息"?Click="SendMessage_Click"/><MenuItem?Header="閃爍"?Name="menuItemTwink"??Click="Twink_Click"/><MenuItem?Header="關于"?Click="About_Click"><MenuItem.Icon><Path?Data="{StaticResource?PathWarning}"?Fill="{DynamicResource?PrimaryNormalSolidColorBrush}"Stretch="Uniform"?Height="20"?Width="20"/></MenuItem.Icon></MenuItem><MenuItem?Header="退出"?Click="Quit_Click"/></ContextMenu></wpfdev:NotifyIcon.ContextMenu></wpfdev:NotifyIcon>

4)事件Twink_Click代碼如下:

private?void?Twink_Click(object?sender,?RoutedEventArgs?e){WpfNotifyIcon.IsTwink?=?!WpfNotifyIcon.IsTwink;menuItemTwink.IsChecked?=?WpfNotifyIcon.IsTwink;}

?鳴謝 - 弈虎

229b6ac059d1b2ffb20250d2eacbeaf2.gif

Github|NotifyIcon[3]
碼云|NotifyIcon[4]

參考資料

[1]

Nuget : https://www.nuget.org/packages/WPFDevelopers/

[2]

Nuget : https://www.nuget.org/packages/WPFDevelopers.Minimal/

[3]

Github|NotifyIcon: https://github.com/WPFDevelopersOrg/WPFDevelopers/blob/master/src/WPFDevelopers.Samples/ExampleViews/MainWindow.xaml

[4]

碼云|NotifyIcon: https://gitee.com/WPFDevelopersOrg/WPFDevelopers/blob/master/src/WPFDevelopers.Samples/ExampleViews/MainWindow.xaml

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/281437.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/281437.shtml
英文地址,請注明出處:http://en.pswp.cn/news/281437.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

電機與系統計算機仿真作業,北郵計算機仿真期末大作業.docx

文檔介紹&#xff1a;EvaluationWarning:ThedocumentwascreatedwithSpire..I瑋涼爰p電大摩《計算機仿真》MATLAB課程設計報告學院: 自動化學院 專業: 自動化專業 班級: 2010211411姓名: 韓思宇 學號: 10212006 2013年01月14日轉子繞線機控制系統綜合仿真摘要:轉子繞線機的控制系…

Software License Manager

slmgr -ilc lenovo.xrm-ms slmgr -ipk lenovo-lenovo-lenovo-lenovo-lenovo轉載于:https://www.cnblogs.com/cuthead/p/license.html

Sqlserver數據庫還原一直顯示“正在還原…”解決方法

今天在Sqlerver還原數據庫時一直就卡在那里提示“正在還原…”的狀態&#xff0c;此時無法操作數據庫,下面我來給大家介紹解決些問題的方法解決方法&#xff1a; 代碼如下復制代碼 RESTORE DATABASE demo FROM DISK D:/demo.bak WITH MOVE demo TO d:/demo.mdf, MOVE dem…

Information Retrieval 倒排索引 學習筆記

一&#xff0c;問題描述 在Shakespeare文集&#xff08;有很多文檔Document&#xff09;中&#xff0c;尋找哪個文檔包含了單詞“Brutus”和"Caesar"&#xff0c;且不包含"Calpurnia"。這其實是一個查詢操作&#xff08;Boolean Queries&#xff09;。 在U…

計算機地址欄搜索不了網,我的電腦地址欄不見了怎么辦 地址欄不見了如何解決...

導語&#xff1a;小編對電腦是比較癡迷的&#xff0c;因此喜歡在自己的電腦上進行各種操作&#xff0c;也經常會碰到一些問題。今天要為大家介紹的是在我的電腦地址欄不見了之后怎么辦&#xff0c;熟悉電腦的朋友都能夠了解。在我的電腦主界面里面&#xff0c;有一個地址欄&…

實踐App內存優化:如何有序地做內存分析與優化

由于項目里之前線上版本出現過一定比例的OOM,雖然比例并不大&#xff0c;但是還是暴露了一定的問題&#xff0c;所以打算對我們App分為幾個步驟進行內存分析和優化&#xff0c;當然內存的優化是個長期的過程&#xff0c;不是一兩個版本的事&#xff0c;每個版本都需要收集線上內…

php OpenSSL 加解密

2018-1-6 17:10:19 星期六 1 $data 123456;2 $openssl_method AES-256-CBC;3 $openssl_iv_length openssl_cipher_iv_length($openssl_method);4 $openssl_iv openssl_random_pseudo_bytes($openssl_iv_length);5 $openssl_password openssl_random_pseudo_bytes(16);6 7 …

前端應該掌握的網絡知識(1)

1、客戶端&#xff1a;通過發送請求獲取服務器資源的web瀏覽器等。 2、TCP/IP協議族按層次分為&#xff1a;應用層、傳輸層、網絡層和數據鏈路層。 應用層決定了向用戶提供應用服務時通信的活動。比如&#xff1a;FTP&#xff08;文本傳輸協議&#xff09;和DNS&#xff08;域名…

WinForm(十四)窗體滾動日志

在桌面程序里&#xff0c;一般日志記錄到文件里就可以了&#xff0c;但有的時間&#xff0c;也需要在窗體上動態滾動顯示&#xff0c;這時&#xff0c;就需要引入日志框架了。這里引入的依舊是NLog&#xff08;在我的Mini API系統里&#xff0c;用的也是NLog&#xff09;。首先…

xp計算機找不到音量調節,WinXP電腦沒聲音且小喇叭不見了如何解決?

有用戶在使用電腦聽音樂的時候&#xff0c;突然發現電腦沒有聲音了&#xff0c;本來以為只是被禁了音&#xff0c;想著調節音量即可解決問題。但是當他想要點開音量小喇叭的時候&#xff0c;發現桌面任務欄通知區域的小喇叭不見了&#xff0c;這該怎么辦呢&#xff1f;下面小編…

2018-2019-1 20165211 實驗四 外設驅動程序設計

2018-2019-1 20165211 實驗四 外設驅動程序設計 任務一 1.實驗要求 學習資源中全課中的“hqyj.嵌入式Linux應用程序開發標準教程.pdf”中的第十一章 提交康奈爾筆記的照片&#xff08;可以多張&#xff09; 2. 任務完成 任務二 1. 實驗要求 在Ubuntu完成資源中全課中的“hqyj.嵌…

《ASP.NET Core 6框架揭秘》實例演示[31]:路由高階用法

ASP.NET的路由是通過EndpointRoutingMiddleware和EndpointMiddleware這兩個中間件協作完成的&#xff0c;它們在ASP.NET平臺上具有舉足輕重的地位&#xff0c;MVC和gRPC框架&#xff0c;Dapr的Actor和發布訂閱編程模式都建立在路由系統之上。Minimal API更是將提升到了前所未有…

java中文亂碼解決之道(五)—–java是如何編碼解碼的

編碼&解碼 1&#xff1a;I/O操作 2&#xff1a;內存 3&#xff1a;數據庫 4&#xff1a;javaWeb 下面主要介紹前面兩種場景&#xff0c;數據庫部分只要設置正確編碼格式就不會有什么問題&#xff0c;javaWeb場景過多需要了解URL、get、POST的編碼&#xff0c;servlet的解碼…

java反射--Class類

面向對象的世界里&#xff0c;萬事萬物皆對象。 1&#xff09;類是誰的對象呢&#xff1f; 類是對象&#xff0c;類是java.lang.Class類的實例對象。 2&#xff09;這個對象如何表示呢&#xff1f; package com.reflect;public class ClassDemo1 {public static void main(Stri…

win10系統按esc會彈出計算機,win10系統版本2004控制面板多出ESC是什么原因?

如果我們的電腦在升級了win102004控制面板多出ESC什么情況方法一&#xff1a;“干凈啟動”&#xff0c;排除第三方軟體的影響1.停止非核心的程序運作(包括第三方殺毒、優化軟體)2.情況允許的話&#xff0c;卸載設備中的第三方殺毒、管家、優化軟件3.同時按【4.點擊【服務】>…

CentOS6/7 配置守護進程

CentOS6.xCentOS6中轉用Upstrat代替以前的init.d/rcX.d的線性啟動方式。一、相關命令通過initctl help可以查看相關命令[rootlocalhost ~]# initctl help Job commands:start Start job.stop Stop job.restart …

Vue源碼解析之數組變異

力有不逮的對象 眾所周知&#xff0c;在 Vue 中&#xff0c;直接修改對象屬性的值無法觸發響應式。當你直接修改了對象屬性的值&#xff0c;你會發現&#xff0c;只有數據改了&#xff0c;但是頁面內容并沒有改變。 這是什么原因&#xff1f; 原因在于&#xff1a; Vue 的響應式…

linux守護進程的編寫

linux監控一個進程進行 代碼如下: #!/bin/shcd /home/autoprocess/ autopgrep -f autoProcessNew.php | wc -l if [ "$auto" 0 ] then nohup php autoProcessNew.php & fi 監視autoProcessNew.php,使他一直監視轉載于:https://www.cnblogs.com/matengfei123/p/…

微軟2014編程之美初賽第一場——題目3 : 活動中心

【來源】 題目3 : 活動中心 【分析】 本題採用的是三分法。 輸入的一組點中找出左右邊界。作為起始邊界。 while(右邊界-左邊界<精度){將左右邊界構成的線段均勻分成3段&#xff0c;推斷切割點的距離關系&#xff0c;抹去距離大的一段。更新左右邊界。 } 輸出左(右)邊界 【…

windows10計算機里輸入法,win10電腦上輸入法不見了怎么辦

好的輸入法可以加快我們的工作效率&#xff0c;當電腦上輸入法不見時&#xff0c;你會調出來嗎?下面小編告訴你win10電腦上輸入法不見時弄出來的一些訣竅吧。win10電腦上輸入法不見了的解決方法win10電腦上輸入法不見了的解決方法&#xff1a;Win10系統輸入法圖標不見了的找回…