using system;using system.collections.generic;
using system.linq;
using system.net;
using system.windows;
using system.windows.controls;
using system.windows.documents;
using system.windows.input;
using system.windows.media;
using system.windows.media.animation;
using system.windows.shapes;
using system.windows.threading;
namespace testsl
); timer.interval = new
timespan(0, 0, 0, 0, 200);
}void mycontrol_mouseleftbuttondown(object sender, mousebuttoneventargs e)
else}}
}說明:
計時器timer是處理雙擊事件的計時器,欄位isdoubleclick是判斷是否是雙擊事件的標示符;
建構函式中為自定義控制項繫結了mouseleftbuttondown事件並初始化timer物件,設定了200毫秒的時間刻度,同時定義超過該刻度觸發結束計時器的事件;
mouseleftbuttondown中,當第一次點選時啟動計時器,並修改雙擊標示符,且觸發單擊事件,當連續2次點選間隔小於200毫秒時,會觸發雙擊事件;
需要注意的是如果使用 system.threading.timer,則值得注意的是 timer 執行於與使用者介面執行緒 (ui) 不同的執行緒上。為了訪問 ui 執行緒上的物件,需要使用 dispatcher.begininvoke 將操作發布到 ui 執行緒的 dispatchertimer 上。當使用 dispatchertimer 時,這不是必需的。
<usercontrol x:
class
="testsl.mainpage"
xmlns
=""xmlns:x
=""xmlns:d
=""xmlns:mc
=""mc:
ignorable
="d"
d:designheight
="300" d:
designwidth
="400"
xmlns:my
="clr-namespace:testsl">
<
grid x:
name
="layoutroot"
background
="white">
mycontrol
horizontalalignment
="center"
margin
="0" x:
name
="mycontrol1"
verticalalignment
="center"
borderbrush
="black"
borderthickness
="1"
width
="50"
height
="50"
background
="red"
single_click
="mycontrol1_single_click"
double_click
="mycontrol1_double_click"/>
grid
>
usercontrol
>
自定義控制項新增事件
事件,委託,總是看起來有點繞,不過本文不介紹這些,只說說如何為自定義控制項新增自定義事件。本文所說的自定義控制項,非繼承其他現有microsoft控制項或者組合控制項,而是完全繼承usercontrol的東西。既然不是繼承自其他現有控制項或者控制項組合,在特定需求下,有新增自定義事件的可能性,或者對...
使用者控制項中多控制項自定義單擊事件
這個題目聽上去有點繞,不知道該如何描述。如下圖,根據需求自定義了乙個使用者控制項 usercontrol 除了使用者控制項本身外,上面還有乙個標籤控制項 labelcontrol 和控制項 pictureedit 它們三者各自有乙個單擊事件 click 現使用者控制項的單擊click事件只能在 非控...
為C 自定義控制項新增自定義事件
大氣象 原文 為c 自定義控制項新增自定義事件 這裡的自定義控制項是由普通控制項組合而成的。希望事件響應 推遲到使用自定義控制項的窗體裡寫。步驟一 新建乙個使用者控制項,放兩個按鈕,tag分別是btn1,btn2.這兩個按鈕的共用單擊事件處理 如下 using system using system...