То, что вы делаете, является отличным способом узнать, как и когда возникают события, и как их можно использовать для настройки поведения приложений, и похоже на то, что многие из нас сделали за эти годы.
Исходя из того, что вы говорите, вы хотите сделать, есть несколько проблем. Если вы посмотрите на этот код, он будет делать то, что вы хотите.
public void button1_Click(object sender, EventArgs e)
{
int n = 0;
for (int counter = 0; counter < richTextBox1.TextLength; counter++)
{
if (richTextBox1.Text[counter] == ' ')
{
n++;
}
}
MessageBox.Show(n.ToString("N1"));
}
Ключевым отличием является то, что я смотрю на введенный текст только при нажатии кнопки. (TextChanged запускается каждый раз, когда в отображаемом тексте есть изменения). Я решил не использовать переменную float
для хранения счетчика пробелов, поскольку счетчик всегда будет целым числом.
Кроме того, параметр TextChanged System.Windows.Forms.KeyEventArgs e
является неправильным и никогда не будет компилироваться, если правильно привязан к событию TextChanged
.
Параметр KeyEventArgs
используется событиями KeyUp
и KeyDown
. Если вы используете эти события, вы будете рассчитывать каждый раз, когда нажимается пробел, а не количество пробелов в текстовом поле. И, как следует из их названия, события генерируются каждый раз, когда клавиша на клавиатуре поднимается вверх (нажата) и вниз (отпускается).