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;
}
}