代码之家  ›  专栏  ›  技术社区  ›  Hrvoje PrgeÅ¡a

wpf文本框-在保留“选择方向”的同时程序选择文本

  •  4
  • Hrvoje PrgeÅ¡a  · 技术社区  · 15 年前

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

    我尝试在WPF的文本框中常规地修改用户选择(为了讨论的目的,假设我想成对选择字符,例如,当按下SHIFT+LEFT时,将选择2个字符,而不仅仅是一个)。但是,当使用selectionstart/selectionindex/caretindex/select时,所选内容的“movebale end”始终以最右端结束,从而使shift+left组合无效。

    有没有办法保持“选择方向”?

    4 回复  |  直到 12 年前
        1
  •  5
  •   Robert Jeppesen    15 年前

    这不完全是你想要的答案,但它会起作用的。调用该命令并按wpf的方式执行。

         EditingCommands.SelectLeftByCharacter.Execute(null, textBox1);
    
        2
  •  2
  •   avpaderno    12 年前

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

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

        3
  •  0
  •   Bryan Anderson    15 年前

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

        4
  •  0
  •   splintor Vladimir Nabokov    15 年前

    你试过设置 CaretIndex property 在设置SelectionStart/SelectionLength之前或之后?