5

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

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

有什么方法可以保留“选择方向”?

4

4 回答 4

6

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

     EditingCommands.SelectLeftByCharacter.Execute(null, textBox1);
于 2009-11-24T20:47:27.833 回答
2

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

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

于 2011-06-22T13:57:51.657 回答
0

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

于 2009-10-17T14:03:01.933 回答
0

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

于 2009-11-22T06:09:08.133 回答