我使用的是 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/