您的位置:首页 > 其它

UserControl的单击事件对鼠标左右键都有效,怎样使之像按钮控件那样只对鼠标左键敏感?

2006-06-07 05:08 387 查看
UserControl的单击事件对鼠标左右键都有效,怎样使之像按钮控件那样只对鼠标左键敏感?

经过反复推敲将这篇文章内容中的程序部分进行了改进,请看“(改进)UserControl的单击事件对鼠标左右键都有效,怎样使之像按钮控件那样只对鼠标左键敏感?”
在这个改进的版本里,直接重写了OnMouseUp方法,并且在其中加入了至关重要的判断内容。不仅如此,还加入了MouseClick事件,类似于.net 2005中的MouseClick事件。

首先,来看一下我想要的单击事件是什么样的:

鼠标左键被按下
鼠标左键被抬起
鼠标在此期间没有移动

这就是我所要的单击。至于实现,请看下文:

private bool _isClick = false;//标记控件是否被单击

/// <summary>
///左键被按下
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void ClickDown(object sender, System.Windows.Forms.MouseEventArgs e)
{
if(e.Button == MouseButtons.Left)
{
this._isClick = true;
}
else
{
this._isClick = false;
}
}

/// <summary>
/// 左键抬起
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void ClickUp(object sender, System.Windows.Forms.MouseEventArgs e)
{
if(e.Button == MouseButtons.Left & this._isClick == true)
{
this._isClick == false
//写一些程序在这,这里就是处理单击的地方;或者干脆弄个事件出来,也是个相当不错的选择。
}
}

/// <summary>
/// 单击取消
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void ClickCancel(object sender, System.Windows.Forms.MouseEventArgs e)
{
if(e.Button == MouseButtons.Left & this._isClick == true)
{
this._isClick = false;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐