WPF TextBox - 以编程方式选择文本,同时保留“选择方向”

时间:2009-10-17 11:26:45

标签: wpf textbox selection caret direction

当编辑文本时,用户可以使用键盘移位按钮和方向键来修改选择 - 一个位置保持锚定而另一个位置移动。通过向左按压,可以将可移动部件放在锚定部件的左侧。

我正试图在WPF的TextBox中修改用户选择(为了讨论的目的,假设我想成对选择字符,例如,当按Shift +左键时,将选择2个字符,而不是只有一个)。但是,当使用SelectionStart / SelectionIndex / CaretIndex / Select时,选择的“movebale end”总是在选择的最右端结束,使shift + left组合无用。

任何保留“选择方向”的方法?

4 个答案:

答案 0 :(得分:5)

这不是你正在寻找的答案,但它会奏效。调用命令并按照WPF的方式执行。

     EditingCommands.SelectLeftByCharacter.Execute(null, textBox1);

答案 1 :(得分:2)

这些都不起作用。 SelectionLength不允许为负数,CaretIndex总是与SelectionStart相同。这是TB中的设计错误,因为即使在受保护的范围内也无法实现它的有效状态。

该命令实际上有效,但您仍然无法确定当前分析的文本框的选择方向。只有一个解决方案,这是一个丑陋的解决方法:您可以通过覆盖鼠标和键盘事件处理程序来编写自己的观察者代码。

答案 2 :(得分:0)

我能想到的唯一可能性是设置SelectionStart然后使SelectionLength为负。

答案 3 :(得分:0)

您是否尝试在设置SelectionStart / SelectionLength之前或之后设置CaretIndex property