计算在RichTextBox c#winform中输入的文本长度

时间:2013-08-09 16:35:26

标签: c# winforms richtextbox

我有RichTextBox,我想计算KeyDown事件中输入的文字长度。问题是资本形式的字符我必须按Shift,这也是在长度上计算的。请参阅以下代码:

 private void rtfText_KeyDown(object sender, KeyEventArgs e)
 {
    if (e.Modifiers != Keys.Shift)
        {
            var val = (char)e.KeyValue;
            string  _typed += val;                           
        }

}

对于资本为W获胜等文字,_typed的长度显示为4,其中3应为2。怎么解决这个?我编写了上面的代码来克服这个问题,但由于压制3,现在长度显示为Shift而不是{{1}}。

2 个答案:

答案 0 :(得分:1)

您应该直接从ritch文本框中获取TextLength属性:

var textLength = rtfText.TextLength

答案 1 :(得分:1)

只需将您的代码更改为:

private void rtfText_KeyDown(object sender, KeyEventArgs e)
{
    if (!char.IsControl((char)e.KeyValue))
    {
        var val = (char)e.KeyValue;
        string  _typed += val;
    }
}

这样,如果按下一个控制键,你就不会计算它或将它聚合到你的字符串中。 (PS:控制键是shift,ctrl ...)

请看此链接:http://msdn.microsoft.com/fr-fr/library/18zw7440(v=vs.95).aspx 它列出了控制字符并解释了char.IsControl方法的确切含义

编辑:实际上有很多情况它无法正常工作。当然,您可以尝试处理每种特定情况(例如backspacectrl+V ...),但最简单的方法是使用TextLenght属性和TextChanged事件