Textbox validation   zodpovězená otázka

VB.NET

Dobrý den, prosím o radu jak docílím v textboxu "jednoduché" validace, zda se jedná o řetězec, číslo (int i double).

Záměrně píšu "jednoduché", protože jsem dříve viděl .net metodu, která uměla přímo vrátit true/false, bohužel jsem tento způsob už nenašel. Ošetření regulárními výrazy nebo jednotlivý test v try-catch není těžké napsat, ale pro formulář se spoustou textboxů, je to zbytečně dlouhé, a navíc proč psát něco, co už bylo napsáno :)

Děkuji za odpověď

nahlásit spamnahlásit spam 0 odpovědětodpovědět
Private Sub TextBox1_Validating(ByVal sender As Object, ByVal e As CancelEventArgs) Handles TextBox1.Validating
  If IsNumeric(TextBox1.Text) Then
    'Hodnota je číslo
  Else
    'Hodnota není číslo
  End If
End Sub

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Je lépe se vyvarovat starých a přežitých funkcí ze starých verzí VB. Raději použijte klasickou .NETovou cestu.

If Double.TryParse(TextBox1.Text, Nothing) Then
    
End If

Popřípadě můžete použít Integer.TryParse, pokud nechcete povolit desetinná čísla.

Osobně je ale na číslo lepší použít komponentu NumericUpDown, nemusíte pak validaci provádět, jenom vlasnostmi Minimum a Maximum zadáte požadovaný rozsah hodnot a případně vlastností DecimalPlaces počet desetiných míst.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

To je pravda, ovšem narozdíl od TryParse metoda IsNumeric není závislá na jazykové kultuře, tudíž validace projde jak s řetězcem "123.45" tak "123,45" a vůbec je taková benevolentnější vůči vstupnímu parametru.

Jinak vím že se doporučuje dávat přednost metodám z Frameworku před metodami jazyka Visual Basic, ovšem podle mého průzkumu tato taktika není vždy vhodná, protože např. FileLen("soubor") je daleko rychlejší než My.Computer.FileSystem.GetFileInfo("soubor").Length

nahlásit spamnahlásit spam 0 odpovědětodpovědět

S tím IsNumeric máte pravdu, záleží, co člověk potřebuje.

A s tím FileLen - dle Reflectoru vytvoří objekt FileInfo a vytáhnout vlastnost Length. A GetFileInfo dělá naprosto to samé, takže rozdíl možná bude, ale v jednotkách procent.

nahlásit spamnahlásit spam 0 odpovědětodpovědět
                       
Nadpis:
Antispam: Komu se občas házejí perly?
Příspěvek bude publikován pod identitou   anonym.
  • Administrátoři si vyhrazují právo komentáře upravovat či mazat bez udání důvodu.
    Mazány budou zejména komentáře obsahující vulgarity nebo porušující pravidla publikování.
  • Pokud nejste zaregistrováni, Vaše IP adresa bude zveřejněna. Pokud s tímto nesouhlasíte, příspěvek neodesílejte.

přihlásit pomocí externího účtu

přihlásit pomocí jména a hesla

Uživatel:
Heslo:

zapomenuté heslo

 

založit nový uživatelský účet

zaregistrujte se

 
zavřít

Nahlásit spam

Opravdu chcete tento příspěvek nahlásit pro porušování pravidel fóra?

Nahlásit Zrušit

Chyba

zavřít

feedback