給自定義控制項新增單擊和雙擊事件

2022-09-12 13:12:22 字數 1980 閱讀 9417

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...