WPF TextBox Righ to Left

V jednom projektu WPF jsem potřeboval TextBox, ve kterém se text zadává zprava do leva a jde zapsat pouze čísla.
Příklad: píšu 960 a v TextBoxu se mi zobrazí text 069
Po hledání řešení jsem nakonec přišel na jednoduchou metodu, jak dosáhnout požadované funkčnosti aniž bych musel použít reverzní funkce.

Pro TextBox napíšeme kód pro událost PreviewTextInput, kde

  1. pomocí Regex pravidla zjišťujeme zadané znaky ( false, pokud je číslo, jinak true )
  2. nastavíme pozici kursoru na začátek textu ( CaretIndex = 0 )
  3. zapíšeme pouze číslo ( e.Handled = false )
  4. ostatní znaky ignorujeme ( e.Handled = true )
private void TextBox_PreviewTextInput(object sender, TextCompositionEventArgs e)
{
     var result = new Regex("[^0-9]+").IsMatch(e.Text);
     if (!result)
     {
         (sender as TextBox).CaretIndex = 0;
     }
     e.Handled = result;
}

Aby se nám přesunul kursor na začátek textu, použijeme událost KeyUp a přesuneme kursor opět na začátek textu ( CaretIndex = 0 )

private void textBox1_KeyUp(object sender, KeyEventArgs e)
{
    (sender as TextBox).CaretIndex = 0;
}

Napsat komentář

Vaše emailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *