wpf自定義計時器控制項

2021-08-10 03:10:22 字數 3340 閱讀 4644

最近要用到乙個計時功能,所以臨時寫了乙個控制項,以備以後再次使用,不夠完善,但功能算是實現了.效果圖如下:

————————–分割線———————————————-

步驟:

1.新建乙個類庫,名為wpfcustomcontrols(或其它,下同)

刪除預設的cs檔案.新增乙個theme資料夾,在theme資料夾下新建乙個資源字典名為generic.xaml .結構如下,右擊專案,新增乙個自定義控制項(wpf),名為timer.cs,最終目錄結構為:

———————-注意注意—–要上**了——————————–

2.timer.cs內timer類

public

class timer : control

public

timer()

private

void

timer_tick1(object sender, eventargs e)

::", temp.minutes, temp.seconds, temp.milliseconds);

}private timespan per = new timespan(0, 0, 0, 0, 45);//時間間隔

dispatchertimer timer=new dispatchertimer();//計時器

public

int status = 0;//0初始狀態 1 進行狀態 2 暫停狀態

public

string _text

set

}///

/// 介面繫結用於顯示時間

///public

static

readonly dependencyproperty _textproperty =

dependencyproperty.register("_text", typeof(string), typeof(timer), new propertymetadata("0:0:0"));

public

static

readonly routedevent statuschangedevent = eventmanager.registerroutedevent("statuschanged", routingstrategy.bubble, typeof(routedpropertychangedeventhandler), typeof(timer));

public

event routedpropertychangedeventhandler statuschanged

remove

}private timespan pausetime=timespan.zero;//從開始到現在期間暫停的時間

private datetime pausestarttime;// 暫停 開始的時間

private datetime starttime;

public datetime starttime

set

}public

override

void

button stopbtn = base.gettemplatechild("stopbutton") as button;

if(stopbtn!=null)

}private

void

stopbtn_click(object sender, routedeventargs e)

raisestatuschangedevent(oldstatus, status);

}private

void

raisestatuschangedevent(int oldvalue,int newvalue)

private

void

changedstatusbutton_click(object sender, routedeventargs e)

else

if (status == 1)

else

// if(status==2)//必然(繼續)}}

——————–又要上了—————————————————–

timer.xaml內容如下:

""

xmlns:x=""

xmlns:local="clr-namespace:wpfcustomcontrols">

property="template">

"">

background=""

borderbrush=""

borderthickness=""

padding="0" margin="0" width=""

height=""

cornerradius="5">

"4*">

"1.6*">

"1.6*">

grid.columndefinitions>

"left" margin="10 0 0 0" verticalalignment="center"

grid.column="0"

text="">

grid.column="1" width="40" content="開始"

background="transparent" horizontalalignment="center" margin="1" borderthickness="0">button>

grid.column="2" content="結束"

background="transparent" horizontalalignment="center" margin="1" borderthickness="0">

button>

grid>

setter.value>

setter>

style>

—————————-完成後先生成專案—————————————

右擊解決方案,新建乙個wpf應用程式 ,

新增wpfcustomcontrols的引用,

雙擊開啟mainwindow.xaml

新增下圖標註內容:

計時器控制項

計時器控制項可以每隔乙個時間間隔 interval 觸發乙個計時器事件 timer 所謂的時間間隔,指的是各個計時器事件之間的時間,一般以毫秒為基本單位。計時器在1秒中內最多產生18個事件,所以兩個事件之間的時間間隔精確到1 18秒。計時器控制項在執行時不可見。計時器控制項的常用屬性 enabled...

WPF自定義控制項(四) 自定義控制項

原文 wpf自定義控制項 四 自定義控制項 在實際工作中,wpf提供的控制項並不能完全滿足不同的設計需求。這時,需要我們設計自定義控制項。這裡lz總結一些自己的思路,特性如下 下面舉例說說在專案中我們經常用到調音台音量條,寫乙個自定義控制項模擬調音台音量條。自定義控制項singnallight,實現...

WPF控制項自定義事件

第一步 定義乙個委託,委託屬於乙個定義,是和類 介面類似的,通常放在外部 輕提示事件委託 public delegate void sendmessageeventhandle string text 第二步 定義乙個sendmessageeventhandle型別事件,事件屬於類的成員,所以要放在...