如何在 WPF 组合框中查找插入符号位置

本文关键字:查找 插入 符号 位置 WPF 组合 | 更新日期: 2023-09-27 18:34:40

由于 WPF Combobox 在 C# 中没有像 Textbox 和 SelectionStart 属性那样的 CaretIndex 属性,我想知道如何获取我的 WPF Combobox 控件的插入符号索引?

谢谢大家。

如何在 WPF 组合框中查找插入符号位置

它不能直接访问 althoug 你可以从它的子控件中获取它。您需要从组合框的控件模板获取PART_EditableTextBox控件。执行此操作的最简单方法是在 ComboBox 的派生中重写 OnApplyTemplate,然后使用该派生订阅更改的选择。然后你可以得到插入符号索引

protected void override OnApplyTemplate()
{
    var myTextBox = GetTemplateChild("PART_EditableTextBox") as TextBox;
    if (myTextBox != null)
    {
      myTextBox .SelectionChanged += OnDropSelectionChanged;
    }
}
private void OnDropSelectionChanged(object sender, RoutedEventArgs e)
{
   var textbox = sender as TextBox;
   if (textbox != null)
    {
      //you can write your own logic.
      _carentIndex = textbox.CaretIndex;
    }
}

确保取消检查到选择更改在您的处置或适当的位置

myTextBox .SelectionChanged -= OnDropSelectionChanged;