【发布时间】:2017-09-24 22:11:52
【问题描述】:
我们继承了一个使用 RADGrid 的项目。它同时启用了双击和单击事件。
但是当 DoubleClick 被触发时,Click 和 CellBeginEdit 也会被触发,...
我想在 DoubleClick 被触发时取消 Click、CellBeginEdit 或其他。
【问题讨论】:
标签: wpf click mouse telerik-grid double-click
我们继承了一个使用 RADGrid 的项目。它同时启用了双击和单击事件。
但是当 DoubleClick 被触发时,Click 和 CellBeginEdit 也会被触发,...
我想在 DoubleClick 被触发时取消 Click、CellBeginEdit 或其他。
【问题讨论】:
标签: wpf click mouse telerik-grid double-click
我有一个来自 Telerik.WinControls.UI.RadGridView 的继承类 Sheet,我在我的项目中用作网格控件。
这个简历是解决问题所需要的:
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);
}
}
希望对你有帮助!!
【讨论】: