- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我使用的是 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/
在WinForms上申请 C#我正在使用RadGridView控制Telerik公司。 此 RadGridView 的其中一列的类型为 GridViewComboBoxColumn 。我想给这个专栏一
我使用的是 RadGridView,其中有一个 View GridViewComboBoxColumn 。编辑器本身是一个自定义编辑器,基于:RadDropDownListEditor。 我目前正在尝
我已经知道如何指定数据源,但在这样做之后它还没有填充,所以我认为你需要某种 bind() 命令来填充编辑表单中的组合框列下面是我如何将数据源绑定(bind)到组合框列(是的,我确定 ds 中有数据行)
我是一名优秀的程序员,十分优秀!