Winform RichTextBox获取使用c#输入的最后一个字符



我使用以下代码提取最后一个字符(刚刚键入的字符),使用以下代码

 private string GetTypedChar()
    {
        string currentChar = "";
        int i = rtfText.SelectionStart; 
        if (i > 0)
        {
            currentChar = rtfText.Text.Substring(i-1, 1);
            MessageBox.Show(i+":"+currentChar);
        }
        return currentChar;
    }

但这给了我错误的结果。如果输入的单词是"RS",则按R后消息框显示1:(空白),然后键入S时消息框显示2:R如何做到这一点?

获取最后一个输入的字符。您可以处理按键事件

private void richTextBox1_KeyUp(object sender, KeyEventArgs e)
    {
        char last = (char)e.KeyValue;
    }

您可以获得富文本框的最后一个字符

string lastCharacter = rtfText.Text.SubString(rtfText.Text.Length - 1,1);

char last = rtfText.Text[rtfText.Text.Length - 1];

重要的问题是何时执行该代码。听起来你订阅了"KeyDown"活动。当引发此事件时,表单-->尚未处理关键笔划,因此您看不到更改。您可以使用KeyUp事件。当它被触发时,控件的上下文发生了变化。

然而,如果新角色不是最后一个,这对你没有帮助。用户可以更改教程的位置并键入字符。然后这个新字符就在文本中间的某个地方。这可以通过实际检查按下了哪个键来解决。此信息位于KeyEventArgs参数中。

您可以完全消除GetTypedChar()并订阅KeyPress事件。

请注意,如果您需要这些信息,这不会提供角色的位置。

private void richTextBox1_KeyPress(object sender, KeyPressEventArgs e)
{
    MessageBox.Show(string.Format("Last char typed: {0}", e.KeyChar));
}

最新更新