Silverlight 4以下版本模拟鼠标双击事件
2012-03-16 13:57
393 查看
在Silverlight 5的新特性中已经包含了鼠标双击的事件,看以下的代码
<Grid x:Name="LayoutRoot" Background="White">
<Ellipse Height="103" HorizontalAlignment="Left" Fill="Green" Margin="117,56,0,0"
Name="ellipse1" Stroke="Black" StrokeThickness="1" VerticalAlignment="Top"
Width="158" MouseLeftButtonDown="ellipse1_MouseLeftButtonDown"
MouseRightButtonDown="ellipse2_MouseRightButtonDown" />
</Grid>在事件实现中:
private void ellipse1_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
//判断鼠标在系统设置的双击间隔时间之内被点击了两次则弹出窗口显示
if (e.ClickCount == 2)
{
MessageBox.Show("鼠标左键点击"+e.ClickCount.ToString());
}
}
而在Silverlight4以下版本均不包含ClickCount的属性,那么只能自己实现,于是,实现了一个模拟鼠标双击的功能:
public class MouseTool
{
//双击事件定时器
private DispatcherTimer _timer;
//是否单击过一次
private bool _isFirst;
public MouseTool()
{
this._timer = new DispatcherTimer();
this._timer.Interval = new TimeSpan(0, 0, 0, 0, 400);
this._timer.Tick += new EventHandler(this._timer_Tick);
}
/// <summary>
/// 判断是否双击
/// </summary>
/// <returns></returns>
public bool IsDoubleClick()
{
if (!this._isFirst)
{
this._isFirst = true;
this._timer.Start();
return false;
}
else
return true;
}
//间隔时间
void _timer_Tick(object sender, EventArgs e)
{
this._isFirst = false;
this._timer.Stop();
}
}在事件调用中如下:
private MouseTool _mouseTool = new MouseTool();
public void GridSplitter_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
if (this._mouseTool.IsDoubleClick())
{
//...就是这么简单!
<Grid x:Name="LayoutRoot" Background="White">
<Ellipse Height="103" HorizontalAlignment="Left" Fill="Green" Margin="117,56,0,0"
Name="ellipse1" Stroke="Black" StrokeThickness="1" VerticalAlignment="Top"
Width="158" MouseLeftButtonDown="ellipse1_MouseLeftButtonDown"
MouseRightButtonDown="ellipse2_MouseRightButtonDown" />
</Grid>在事件实现中:
private void ellipse1_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
//判断鼠标在系统设置的双击间隔时间之内被点击了两次则弹出窗口显示
if (e.ClickCount == 2)
{
MessageBox.Show("鼠标左键点击"+e.ClickCount.ToString());
}
}
而在Silverlight4以下版本均不包含ClickCount的属性,那么只能自己实现,于是,实现了一个模拟鼠标双击的功能:
public class MouseTool
{
//双击事件定时器
private DispatcherTimer _timer;
//是否单击过一次
private bool _isFirst;
public MouseTool()
{
this._timer = new DispatcherTimer();
this._timer.Interval = new TimeSpan(0, 0, 0, 0, 400);
this._timer.Tick += new EventHandler(this._timer_Tick);
}
/// <summary>
/// 判断是否双击
/// </summary>
/// <returns></returns>
public bool IsDoubleClick()
{
if (!this._isFirst)
{
this._isFirst = true;
this._timer.Start();
return false;
}
else
return true;
}
//间隔时间
void _timer_Tick(object sender, EventArgs e)
{
this._isFirst = false;
this._timer.Stop();
}
}在事件调用中如下:
private MouseTool _mouseTool = new MouseTool();
public void GridSplitter_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
if (this._mouseTool.IsDoubleClick())
{
//...就是这么简单!
相关文章推荐
- Silverlight模拟鼠标双击事件
- silverlight datagrid 模拟单元格双击事件
- javascript模拟鼠标双击事件
- 稳扎稳打Silverlight(32) - 2.0Tip/Trick之MessageBox, Popup, 循环的几种实现方法, 动态变换主题, 本地化(多语言), 响应鼠标双击事件
- silverlight 自定义 鼠标 双击事件
- Silverlight 双击事件模拟
- Silverlight 鼠标双击 事件
- Silverlight 鼠标双击事件处理
- Silverlight实用窍门系列:12.继承于某些固定控件(以Grid为例)的鼠标左键双击事件的实现【附带实例源码】
- My Silverlight系列(11)—— Silverlight中的右键事件点击模拟(全局版本)
- Silverlight - 鼠标右键及左键双击事件
- MVVM Silverlight 5 Datagrid MVVM 鼠标双击事件
- Qt使用Windows Api模拟鼠标单击双击滚轮事件
- 稳扎稳打Silverlight(32) - 2.0Tip/Trick之MessageBox, Popup, 循环的几种实现方法, 动态变换主题, 本地化(多语言), 响应鼠标双击事件
- 模拟鼠标双击事件方法
- silverlight 自定义 鼠标 双击事件
- Silverlight 模拟双击事件
- 用java代码模拟鼠标双击事件
- Silverlight实用窍门系列:11.Silverlight中为自定义控件添加鼠标双击属性,Silverlight模拟鼠标双击【附带源码实例】
- Silverlight DataGrid鼠标双击事件