Telerik WinForms:双击不与单击区别 [英] Telerik WinForms: Double clicking not distinguishing with single clicking
本文介绍了Telerik WinForms:双击不与单击区别的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我们继承了一个使用RADGrid的项目.它同时具有双击事件和单击事件.
We have inherited a project that uses RADGrid. It has both events for double and single clicking enabled.
但是,当DoubleClick被触发时,Click和CellBeginEdit也会被触发...
But when DoubleClick is fired, so are Click and CellBeginEdit,...
我想在触发DoubleClick时取消Click,CellBeginEdit或其他操作.
I want to cancel Click, CellBeginEdit or others when DoubleClick is fired.
推荐答案
This resume what is needed to solve the problem:
public partial class Sheet : Telerik.WinControls.UI.RadGridView
{
//System Time to wait between Click and DoubleClick
private int _doubleClickTime = 500;
private bool _doubleClickRaised = false;
private bool _doubleClickCancelEdit = false;
public void FpSpread()
{
_doubleClickTime = System.Windows.Forms.SystemInformation.DoubleClickTime;
//...
}
protected override void OnMouseDoubleClick(MouseEventArgs e)
{
_doubleClickRaised = true;
_doubleClickCancelEdit = true;
base.OnMouseDoubleClick(e);
}
protected override void OnMouseClick(MouseEventArgs e)
{
//Doing what Telerik doesn't
//Wait system time needed for DoubleClick
System.Threading.Thread.Sleep(_doubleClickTime + 10);
Application.DoEvents();
if (_doubleClickRaised)
{
_doubleClickRaised = false;
return;
}
base.OnMouseClick(e);
}
//This only when editable cells...
protected override void OnCellBeginEdit(object sender, GridViewCellCancelEventArgs e)
{
if (_doubleClickCancelEdit)
{
_doubleClickCancelEdit = false;
e.Cancel = true;
}
base.OnCellBeginEdit(sender, e);
}
}
我希望这会有所帮助!
这篇关于Telerik WinForms:双击不与单击区别的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文