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

时间:2013-08-08 14:43:27

标签: c# winforms richtextbox

我使用以下代码使用以下代码

提取最后一个字符(刚刚输入的字符)
 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 怎么做到这一点?

3 个答案:

答案 0 :(得分:3)

获取最后输入的字符。您可以处理keyup事件

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];

答案 1 :(得分:2)

重要的问题是 时执行该代码。听起来你订阅了'KeyDown'事件。当这个事件被提出时,关键笔划还没有被表格处理 - >所以你没有看到变化。您可以使用KeyUp事件。当它被触发时,您的控件具有更改的上下文。

但是,如果新角色不是最后一个角色,那么这对你没有帮助。用户可以更改courser位置并键入角色。然后新角色位于文本中间的某个位置。这可以通过实际检查已按下键来解决。此信息位于KeyEventArgs参数中。

答案 2 :(得分:1)

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

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

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