Crew .NET |
|
Je zat in de goede richting te denken maar de pijljestoetsen zullen het KeyPress event niet raisen. Je probleem los je op door een KeyUp en KeyDown event toe te passen. Maar waarom allebei en niet één van de twee?
Als je enkel KeyUp gaat gebruiken werkt het naar behoren tot je de linker/rechterpijltjestoets een tijdje ingedrukt houdt. Je positie zal pas upgedatet worden wanneer je dan loslaat. Gebruik je enkel KeyDown dan zit er een soort van 'delay' op de update van de positie. Ga je bijvoorbeeld naar de laatst mogelijke positie, dan is nog steeds 1 te weinig, tenzij je nogmaals op de rechterpijltoets duwt.
Wanneer je dus gebruik maakt van beide methodes zal alles naar behoren werken, voorbeeldcode:
private void TextBox1TextChanged(object sender, EventArgs e)
{
UpdateCursorPosition();
}
private void TextBox1Click(object sender, EventArgs e)
{
UpdateCursorPosition();
}
private void TextBox1KeyDown(object sender, KeyEventArgs e)
{
UpdateCursorPosition();
}
private void TextBox1KeyUp(object sender, KeyEventArgs e)
{
UpdateCursorPosition();
}
private void UpdateCursorPosition()
{
var regel = textBox1.GetLineFromCharIndex(textBox1.SelectionStart) + 1;
var teken = textBox1.SelectionStart - textBox1.GetFirstCharIndexOfCurrentLine() + 1;
toolStripStatusLabel1.Text = "Regel " + regel + "Teken " + teken;
}
private void TextBox1TextChanged(object sender, EventArgs e) { UpdateCursorPosition(); } private void TextBox1Click(object sender, EventArgs e) { UpdateCursorPosition(); } private void TextBox1KeyDown(object sender, KeyEventArgs e) { UpdateCursorPosition(); } private void TextBox1KeyUp(object sender, KeyEventArgs e) { UpdateCursorPosition(); } private void UpdateCursorPosition() { var regel = textBox1.GetLineFromCharIndex(textBox1.SelectionStart) + 1; var teken = textBox1.SelectionStart - textBox1.GetFirstCharIndexOfCurrentLine() + 1; toolStripStatusLabel1.Text = "Regel " + regel + "Teken " + teken; }
Hopelijk kan je hiermee verder! |