gpt4 book ai didi

c# - 将光标定位在 GridViewComboBoxColumn (Telerik) 中

转载 作者:行者123 更新时间:2023-11-30 17:48:00 27 4
gpt4 key购买 nike

我使用的是 RadGridView,其中有一个 View 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 的方法。

编辑:尽管上面的代码拦截了键,但左箭头键仍然会导致单元格离开(尽管右箭头键不会导致此结果)。是否有可能避免这种情况?如果可以,如何避免?

谢谢。

最佳答案

一旦将属性转换为 RadDropDownListEditorElement,您就可以访问编辑器的 EditorElement 属性中的文本。如果您想在同一个覆盖范围内执行此操作:

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 事件触发时访问文本的示例,您可能也对此感兴趣。

关于c# - 将光标定位在 GridViewComboBoxColumn (Telerik) 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23826276/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com