Silverlight 双击事件例子
后台代码
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;namespace MouseDbClick{ public partial class MainPage : UserControl,IMouseDbClick { MouseDbClickHander hander = null; public MainPage() { InitializeComponent(); hander = new MouseDbClickHander(this); lbTest.MouseLeftButtonDown += new MouseButtonEventHandler(lbTest_MouseLeftButtonDown); lbTest.MouseLeftButtonUp += new MouseButtonEventHandler(lbTest_MouseLeftButtonUp); string[] str = { "a","b","c","d" }; lbTest.ItemsSource = str; } void lbTest_MouseLeftButtonUp(object sender, MouseButtonEventArgs e) { hander.OnMouseLeftButtonUp(sender, e); } void lbTest_MouseLeftButtonDown(object sender, MouseButtonEventArgs e) { hander.OnMouseLeftButtonDown(sender, e); } #region IMouseDbClick 成员 public void onMouseDbClick(object sender, MouseButtonEventArgs e) { string msg = lbTest.SelectedItem as string; MessageBox.Show(msg); } #endregion }}
实现双击的接口代码
using System;using System.Net;using System.Windows;using System.Windows.Controls;using System.Windows.Documents;using System.Windows.Ink;using System.Windows.Input;using System.Windows.Media;using System.Windows.Media.Animation;using System.Windows.Shapes;namespace MouseDbClick{ public interface IMouseDbClick { void onMouseDbClick(object sender, MouseButtonEventArgs e); }}
实现双击的代码
using System;using System.Net;using System.Windows;using System.Windows.Controls;using System.Windows.Documents;using System.Windows.Ink;using System.Windows.Input;using System.Windows.Media;using System.Windows.Media.Animation;using System.Windows.Shapes;namespace MouseDbClick{ public class MouseDbClickHander { public DateTime lastClick = DateTime.Now; private bool firstClick = false; private IMouseDbClick _mouseDbClick; // Methods public MouseDbClickHander(IMouseDbClick mouseDbclick) { this._mouseDbClick = mouseDbclick; } public void OnMouseLeftButtonDown(object sender, MouseButtonEventArgs e) { } public void OnMouseLeftButtonUp(object sender, MouseButtonEventArgs e) { //UIElement ui = sender as UIElement; TimeSpan span = DateTime.Now - lastClick; if (span.TotalMilliseconds < 40 || firstClick == false) { firstClick = true; lastClick = DateTime.Now; } else { this._mouseDbClick.onMouseDbClick(sender, e); firstClick = false; } } }}
到了Silverlight5.0后鼠标事件中有一个ClickCount属性,可以判断是否是双击。