Как захватить событие нажатия клавиши пробела, используя KeyeventHandler?
У меня есть форма с расширенным текстовым полем, в котором я хочу сделать следующее:
Когда пользователь нажимает кнопку пробела (в настоящее время я делаю это с событием нажатия клавиши, но хочу использовать событие нажатия клавиши, но он не предоставляет e.keycode), должна быть вызвана функция, в которой должна быть реализована эта логика:
последнее записанное слово должно быть извлечено и должно быть перебрано по тексту текстового поля, чтобы найти его число вхождений в текстовом поле.
Что я сделал до сих пор:
private void textContainer_rtb_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Space)
{
String abc = this.textContainer_rtb.Text.Split(' ').Last();
chkWordRepeat(abc);
}
}
public void chkWordRepeat(String lastWordToFind)
{
int count = new Regex(lastWordToFind).Matches(this.textContainer_rtb.Text.Split(' ').ToString()).Count;
MessageBox.Show("Word: " + lastWordToFind + "has come: " + count + "times");
}
Пожалуйста, дайте мне знать, если вышеупомянутая логика верна или нет. И как я могу прикрепить эту логику с событием нажатия клавиши для пробела? Если нет, то, пожалуйста, помогите мне реализовать!
Заранее спасибо.
2 ответа
private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
{
if (e.KeyChar == ' ')
MessageBox.Show("space pressed");
}
Мое мнение это:
public Dictionary<string, int> data;
private void textContainer_rtb_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Space)
{
String abc = this.textContainer_rtb.Text.Split(' ').Last();
chkWordRepeat(abc);
}
}
public void chkWordRepeat(string wrd)
{
bool present = false;
foreach (string key in data.Keys)
if (wrd == key)
{
present = true;
data[wrd]++;
}
if (!present)
data.Add(wrd, 1);
}