我正在使用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);
}
}
我已经尝试了一些东西,但没有提出一种方法可以访问编辑器的文本框或那里的选择开始。
编辑: 尽管上面的代码拦截了键,但左箭头键仍然会导致单元格离开(右箭头键不会导致这种情况)。是否有可能避免这种情况,如果是这样的话?
TNX。
答案 0 :(得分:1)
将属性转换为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;
}
This Telerik article提供了一个示例,当EndEdit
事件触发时,您可能也会感兴趣地访问该文本。