Взгляните на TextChanged событие . Всякий раз, когда текст в элементе управления изменяется, это событие срабатывает. Вы можете подписаться на него, и в обработчике событий разделить ваш текст, чтобы получить каждое слово индивидуально, как это:
// subscribe to event elsewhere in your class
this.myRichTextBox.TextChanged += this.TextChangedHandler;
// ...
private void TextChangedHandler(object sender, EventArgs e)
{
string currentText = this.myRichTextBox.Text;
var words = currentText.Split(new [] { ' ' },
StringSplitOptions.RemoveEmptyEntries);
// whatever else you want to do with words here
}
Edit:
Если вы хотите получить набранное слово, вы можете просто использовать IEnumerable.LastOrDefault :
var words = currentText.Split(new [] { ' ' },
StringSplitOptions.RemoveEmptyEntries);
string currentlyTyped = words.LastOrDefault();
Если вас беспокоят проблемы производительности / взаимодействия с пользователем при разделении слов при каждом вводе текста, вы можете просто проанализировать последний символ и добавить его к некоторому currentWord
:
// in your event handler
char newestChar = this.myRichTextBox.Text.LastOrDefault();
if (char.IsWhiteSpace(newestChar) || char.IsControl(newestChar))
{
this.currentWord = ""; // entered whitespace, reset current
}
else
{
this.currentWord = currentWord + newestChar;
}