计算在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
。
只需将代码更改为:
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
的方法
编辑:实际上,在很多情况下它都不起作用。当然,您可以尝试处理每种特定情况(如backspace
、ctrl+V
…),但最简单的方法是使用TextLenght
属性和TextChanged
事件
您应该直接从ritch文本框中获取TextLength属性:
var textLength = rtfText.TextLength