Diskuze: Ošetrenie vstupu vo WPF
V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.
Člen
Zobrazeno 7 zpráv z 7.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.
Nie som si istý, ale asi si chcel toto:
private void textBox1_TextChanged(object sender, TextChangedEventArgs e)
{
{
if (textBox1.Text.Contains("."))
{
textBox1.Text = textBox1.Text.Substring(0, textBox1.Text.Length - 1) + ",";
textBox1.SelectionStart = textBox1.Text.Length;
}
}
}
když už tak :
private void textBox_PreviewTextInput(object sender, TextCompositionEventArgs e)
{
if (!(char.IsDigit(e.Text, 0)||e.Text==".")) e.Handled = true;
}
ti zajistí ,že kromě definovaných znaků - tady čísel a tečky se nic jiného k textBoxu nedostane
tvoje řešení není dobré - zbytečně přepisuješ už jednou napsaný znak
Takz mi není moc jasné, na co to potřebuješ - odhaduju, že kvůli
parsování - pak v případě, že do textBoxu patří jen čísla použij
výše uvedené řešení
pokud ale tam musí být i normální text tak použij metodu
Replace()
string floatNumber = "123.4";
float.Parse(floatNumber.Replace(".", ","));
nebo :
string floatNumberStr = "123.4";
float floatNumber= float.Parse(floatNumberStr, new CultureInfo("en-US"));
vezme jako oddělovač tečku i čárku
možností je prostě víc
Nerozumiem dosť dobre tvojej poznámke. Bodku zmení na čiarku. Čo je tam zbytočne prepísané?
při tvém řešení se nejdřív do textBoxu vypíše tečka - fyzicky je tam zobrazená -to vyvolá událost TextChanged ve které teprve zjišťuješ , jestli text neobsahuje tečku - a pokud ano, tak ji vyměníš za čárku (mimochodem na to je vymyšlená ta metoda String.Replace() ) a znovu vypíšeš upravený text do textboxu
Kdežto při použití textBox_PreviewTextInput se vůbec s textem v textBoxu nemanipuluje, pokud na vstupu není tebou definovaný znak
je to jako kdybys stál ve škole u tabule a psal to číslo
u tvé verze by se na tebe učitel díval a v momentě, kdy bys napsal tečku by
se zvedl, šel k tabuli všechno cos napsal smazal a napsal to znovu s
čárkou
u mojí verze by ti řekl : "desetinná místa odděl čárkou"
Zobrazeno 7 zpráv z 7.