我正在使用RadGridView,它内部具有一个视图GridViewComboBoxColumn。编辑器本身是基于以下内容的自定义编辑器:RadDropDownListEditor。
我目前正在尝试实现它,以便按向左或向右箭头不会影响单元格或选择项,而是会在编辑器内移动光标。因此,我的问题是如何访问光标在那里的位置。
class CustomizedDropDownEditor : RadDropDownListEditor
{
public override void OnKeyDown(System.Windows.Forms.KeyEventArgs e)
{
if (e.KeyCode == System.Windows.Forms.Keys.Left || e.KeyCode == System.Windows.Forms.Keys.Right)
{
//Customized left right arrow key behaviour
}
else
{
base.OnKeyDown(e);
}
}
我已经尝试了一些方法,但是没有想出一种方法可以访问编辑器的文本框或其中的selectionstart。
编辑:尽管上面的代码截取了按键,但左箭头键仍会导致单元格离开(尽管右箭头键不会导致此错误)。有可能避免这种情况吗?
Tnx。
EditorElement
将属性转换为后,就可以访问编辑器属性中的文本RadDropDownListEditorElement
。如果要在相同的覆盖范围内执行此操作:
class CustomizedDropDownEditor : RadDropDownListEditor
{
public override void OnKeyDown(System.Windows.Forms.KeyEventArgs e)
{
if (e.KeyCode == System.Windows.Forms.Keys.Left || e.KeyCode == System.Windows.Forms.Keys.Right)
{
//Customized left right arrow key behaviour
int selectionStart = ((RadDropDownListEditorElement)this.EditorElement).SelectionStart;
int selectionLength = ((RadDropDownListEditorElement)this.EditorElement).SelectionLength;
}
else
{
base.OnKeyDown(e);
}
}
}
或者,如果您想从其他地方执行此操作,则可以通过网格的ActiveEditor
属性执行相同的操作(尽管我不认为您会需要执行其他操作,因为编辑器当然会关闭并丢失您的文本选择! ):
private void RadGridView1_OnMouseLeave(object sender, EventArgs e)
{
int selectionStart = ((RadDropDownListEditorElement)((CustomizedDropDownEditor)radGridView1.ActiveEditor).EditorElement).SelectionStart;
}
这篇Telerik文章提供了一个EndEdit
事件触发时访问文本的示例,您也可能对此感兴趣。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句