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

本文关键字:文本 输入 RichTextBox c#winform 计算 | 更新日期: 2023-09-27 18:26:59

我有RichTextBox,我想计算在KeyDown事件中输入的文本长度。问题是,对于大写的字符,我必须按下Shift,它的长度也在计算中。请参阅以下代码:

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

对于Win等大写为W的文本,_typed的长度显示为4,其中应为3。如何解决这个问题?我写了上面的代码来克服这个问题,但现在由于抑制了Shift,长度显示为2而不是3

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

只需将代码更改为:

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

这样,如果按下控制键,就不会对其进行计数或将其聚合到字符串中。(PS:控制键为移位、ctrl…)

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

编辑:实际上,在很多情况下它都不起作用。当然,您可以尝试处理每种特定情况(如backspacectrl+V…),但最简单的方法是使用TextLenght属性和TextChanged事件

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

var textLength = rtfText.TextLength