c# - 如何防止 XtraGrid TextEdit 在将光标移动到内容之外时失去焦点

标签 c# .net devexpress xtragrid textedit

我使用的是 DeveloperExpress 中的 XtraGrid,其中有一列保存字符串,通过 TextEdit 控件进行编辑。

当用户进入编辑模式(显示编辑器)时,系统会自动选择文本,就像在 Windows 资源管理器中按 F2 选择某些内容时的情况一样。

现在,如果用户按向左/向右,焦点将从当前单元格移至紧邻左侧/右侧的单元格(也可能是上方/下方的单元格,具体取决于列布局)。

同样的事情发生在用户取消选择编辑器的内容时​​,例如按 home/end,然后将插入符号一直移动到单元格中的左/右(第一个/最后一个字符),然后移动这是又一步,“超越”了内容。

在 Windows 资源管理器中,执行相同的操作只会将插入符号保持在最左/最右位置,它永远不会离开编辑模式,除非通过例如按 Escape 终止。 即使在 Excel 中,在编辑单元格内容时触及左/右单元格边界时,编辑模式也不会终止。

我希望 XtraGrid 在编辑模式下具有相同的行为,但我找不到任何设置或方法来执行此操作。

有人遇到过这个问题并找到解决方法吗? 我也许在这里想倒退了吗? 我真的希望我的应用程序尽可能以一致且“标准 Windows”的方式运行,但我认为事实并非如此。

最佳答案

我想这就是你想要的......

    private void gridControl1_EditorKeyDown(object sender, KeyEventArgs e)
    {
        GridView view = (sender as GridControl).FocusedView as GridView;
        VisualStyleElement.TextBox.TextEdit edit = view.ActiveEditor as VisualStyleElement.TextBox.TextEdit;
        if (edit == null) return;
        if (view.FocusedColumn.FieldName == "FirstName" && view.FocusedRowHandle % 2 == 0)
        {
            e.Handled = (e.KeyData == Keys.Right && edit.SelectionStart == edit.Text.Length) ||
                (e.KeyData == Keys.Left && edit.SelectionStart == 0);
        }
    }

关于c# - 如何防止 XtraGrid TextEdit 在将光标移动到内容之外时失去焦点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7922664/

相关文章:

c# - 有没有一种很好的方法可以将一个 int 分成两个短裤(.NET)?

c# - 如何在运行时向表中添加单元格

c# - 在线程内使用全局字典

c# - 实现返回任务的方法时的契约(Contract)约定

c# - 如何使用 C# 在本地自动获取在线 HTML 表

c# - 如何将 C# dll 导入 python

c# - 仅接受数字值的文本框中仅接受一个 "."

c# - 如何在 .net 核心 Controller 的新类对象中提供 ILogger<ClassName> 实例?

winforms - 将 SlideGroup 实现为表单 [DevExpress] 的一部分

c# - 为什么 WPF/MVVM 应用程序中没有触发事件?