获取RichEditControl的最后输入的单词

时间:2014-04-22 09:05:25

标签: c# devexpress

如何在RichEditControl中获取最后输入的单词 这是我的代码

private void richEditControl1_KeyPress(object sender, KeyPressEventArgs e)
{
    if (e.KeyChar == ' ')
    {
        int wordEndPosition = richEditControl1.Document.CaretPosition.ToInt();
        int currentPosition = wordEndPosition;

        while (currentPosition > 0 && richEditControl1.Text[currentPosition - 1] != ' ')
        {
            currentPosition--;
        }
        string word = richEditControl1.Text.Substring(currentPosition, wordEndPosition - currentPosition);
        this.Text = "Last char typed: " + word;
   }
}

但是当我按 Enter 创建新行时,就错了。

2 个答案:

答案 0 :(得分:0)

我想你想知道它是否被空格或新线包围,只要它是最后一个?也许您应该在While循环中包含New Line检查,因此它不会仅检查空格。

richEditControl1.Text[currentPosition - 1] != "\n"

或类似的东西。不确定“\ n”是否会通过,因为我在一段时间内没有使用这些示例。它可能只是不知道该做什么新线。

答案 1 :(得分:0)

尝试:

    public Form1()
    {
        InitializeComponent();
        richEditControl1.KeyUp +=richEditControl1_Key;
    }

    private void richEditControl1_Key(object sender, KeyEventArgs e)
    {

        var currentText = richEditControl1.Text.Replace("\n", "");
        currentText = richEditControl1.Text.Replace("\r", " ");

        String result = currentText.Trim().Split(' ').LastOrDefault().Trim();

        Console.WriteLine(String.Format("{0}| {1}", DateTime.Now.ToLongTimeString(), result));
    }