网站导航网学 原创论文 原创专题 网站设计 最新系统 原创论文 论文降重 发表论文 论文发表 UI设计定制 论文答辩PPT格式排版 期刊发表 论文专题
返回网学首页
网学原创论文
最新论文 推荐专题 热门论文 论文专题
当前位置: 网学 > 设计资源 > Silverlight > 正文

Silverlight里实现DoubleClick

论文降重修改服务、格式排版等 获取论文 论文降重及排版 论文发表 相关服务

最近在使用SL的时候发现里面没有支持双击事件,虽然可以写代码实现,但是每次都要写一段处理代码很麻烦,于是把它封装成了一个类方便调用,粘上来共享一下

  1. //  *** 实现 ***  
  2. using System;   
  3. using System.Net;   
  4.  using System.Windows;   
  5.  using System.Windows.Controls;   
  6.  using System.Windows.Documents;   
  7.  using System.Windows.Ink;   
  8.  using System.Windows.Input;   
  9.  using System.Windows.Media;   
  10.  using System.Windows.Media.Animation;   
  11.  using System.Windows.Shapes;   
  12.  using System.Collections.Generic;   
  13.      
  14.  
  15.  namespace DoubleClickTest   
  16.  {   
  17.      public class DoubleClick   
  18.      {   
  19.          int Interval;   
  20.         Dictionary<UIElement, TimeSpan> ControlMgr = new Dictionary<UIElement, TimeSpan>();   
  21.      
  22.          /// <summary>  
  23.          /// DoubleClickEvent   
  24.          /// </summary>   
  25.          public event EventHandler<MouseButtonEventArgs> DoubleClickEvent = null;   
  26.      
  27.          /// <summary>   
  28.          /// Construct   
  29.          /// </summary>   
  30.          /// <param name="interval"></param>   
  31.          public DoubleClick(int interval = 200)   
  32.          {   
  33.              this.Interval = interval;   
  34.          }   
  35.      
  36.          /// <summary>   
  37.          /// Attach   
  38.          /// </summary>   
  39.          /// <param name="control"></param>   
  40.          public void Attach(UIElement ctrl)   
  41.          {   
  42.              if (!IsExist(ctrl))   
  43.              {   
  44.                  this.ControlMgr[ctrl] = new TimeSpan(0);   
  45.                  ctrl.MouseLeftButtonDown += new MouseButtonEventHandler(control_MouseLeftButtonDown);   
  46.              }   
  47.          }   
  48.      
  49.          /// <summary>   
  50.          /// Deatch   
  51.          /// </summary>   
  52.          /// <param name="control"></param>   
  53.          public void Deatch(UIElement ctrl)   
  54.          {   
  55.              if (IsExist(ctrl))   
  56.              {   
  57.                  ctrl.MouseLeftButtonDown -= new MouseButtonEventHandler(control_MouseLeftButtonDown);   
  58.                  this.ControlMgr.Remove(ctrl);   
  59.              }   
  60.          }   
  61.      
  62.          void control_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)   
  63.          {   
  64.              UIElement ctrl = sender as UIElement;   
  65.              if (ctrl != null)   
  66.              {   
  67.                  TimeSpan now = new TimeSpan(DateTime.Now.Ticks);   
  68.                  if ((now - ControlMgr[ctrl]).TotalMilliseconds <= Interval)   
  69.                  {   
  70.                      if (DoubleClickEvent != null)   
  71.                      {   
  72.                          DoubleClickEvent(sender, e);   
  73.                      }   
  74.                  }   
  75.                  ControlMgr[ctrl] = now;   
  76.              }   
  77.         }   
  78.  
  79.     
  80.          bool IsExist(UIElement control)   
  81.          {   
  82.             TimeSpan result;   
  83.              return ControlMgr.TryGetValue(control, out result);   
  84.          }   
  85.      }   
  86. }  

演示

  1. <UserControl x:Class="DoubleClickTest.MainPage" 
  2.     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
  3.     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
  4.     xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
  5.     xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
  6.     mc:Ignorable="d" 
  7.     d:DesignHeight="300" d:DesignWidth="400"> 
  8.  
  9.     <Grid x:Name="LayoutRoot" Background="White"> 
  10.         <Ellipse Height="68" HorizontalAlignment="Left" Margin="35,23,0,0" Name="ellipse1" Stroke="Black" StrokeThickness="20" VerticalAlignment="Top" Width="102" /> 
  11.         <TextBlock Height="46" HorizontalAlignment="Left" Margin="35,219,0,0" Name="textBlock1" Text="TextBlock" FontSize="22"  VerticalAlignment="Top" Width="141" /> 
  12.         <Rectangle Height="64" HorizontalAlignment="Left" Margin="35,125,0,0" Name="rectangle1" Stroke="Black" StrokeThickness="20" VerticalAlignment="Top" Width="122" /> 
  13.     </Grid> 
  14. </UserControl> 
  1. using System; 
  2. using System.Collections.Generic; 
  3. using System.Linq; 
  4. using System.Net; 
  5. using System.Windows; 
  6. using System.Windows.Controls; 
  7. using System.Windows.Documents; 
  8. using System.Windows.Input; 
  9. using System.Windows.Media; 
  10. using System.Windows.Media.Animation; 
  11. using System.Windows.Shapes; 
  12.  
  13.  
  14. namespace DoubleClickTest 
  15.     public partial class MainPage : UserControl 
  16.     { 
  17.         /// <summary> 
  18.         /// DoubleClick object 
  19.         /// </summary> 
  20.         DoubleClick DoubleClickHandle = new DoubleClick(); 
  21.  
  22.         public MainPage() 
  23.         { 
  24.             InitializeComponent(); 
  25.  
  26.             // 注册控件的双击事件 
  27.             DoubleClickHandle.Attach(textBlock1); 
  28.             DoubleClickHandle.Attach(ellipse1); 
  29.             DoubleClickHandle.Attach(rectangle1); 
  30.  
  31.             // 双击事件 
  32.             DoubleClickHandle.DoubleClickEvent += (s, e) => 
  33.             { 
  34.                 MessageBox.Show(s.GetType().FullName); 
  35.             }; 
  36.         } 
  37.     } 
设为首页 | 加入收藏 | 网学首页 | 原创论文 | 计算机原创
版权所有 网学网 [Myeducs.cn] 您电脑的分辨率是 像素
Copyright 2008-2020 myeducs.Cn www.myeducs.Cn All Rights Reserved 湘ICP备09003080号 常年法律顾问:王律师