从插入符号位置textarea中提取文本

时间:2012-06-05 20:42:39

标签: wpf textarea extract caret

我无法使用后面的WPF代码从textarea中提取文本。

实施例: 在伦敦的阳光灿烂的日子

如果光标设置在[d * ay],它应该返回白天。 *用于光标。

任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

这似乎有效,但我不确定当插入符号位于空格中间时你希望它如何表现。它是基本上返回接触插入符号的最近的标记。例如,“伦敦阳光灿烂的日子”这个短语有四个标记:“Sunny”,“day”,“in”和“London”。

string selection;

if (txtBox.Text.Length > 0)
{
    int startIndex = 0;

    for (int i = txtBox.CaretIndex - 1; i >= 0; i--)
    {
        if (String.IsNullOrWhiteSpace(txtBox.Text[i].ToString()))
        {
            startIndex = i;
            break;
        }
    }

    int length = txtBox.Text.Length - startIndex;

    for (int i = startIndex; startIndex + i <= txtBox.Text.Length - 1; i++)
    {
        if (String.IsNullOrWhiteSpace(txtBox.Text[startIndex + i].ToString()))
        {
            length = i;
            break;
        }
    }

    selection = txtBox.Text.Substring(startIndex, length);
}
else
{
    selection = "";
}