Zápis dátumu do TextBoxu   připomínka

WinForms

Vytvoril som si taký programček na zápis dátumu do TextBoxu, ktorý uľahčuje zápis dátumov a mení BackColor. Nie je úplne korektný, ale pre moje potreby stačí. Možno sa niekomu zíde...

'Overovanie zápisu
Private Sub MyDatum(ByVal myTextBox As TextBox, ByVal p1 As String, ByVal prevColor As Color)
        If myTextBox.Text <> "" Then
            Try
                myTextBox.Text = CDate(p1)
                myTextBox.BackColor = System.Drawing.SystemColors.Window
            Catch ex As Exception
                 MessageBox.Show("Zadaj dátum jedným z týchto spôsobov:" _
               & vbCrLf & "4/3" _
               & vbCrLf & "4/3/11" _
               & vbCrLf & "4/3/2011" _
               & vbCrLf & "alebo" _
               & vbCrLf & "4.3" _
               & vbCrLf & "4.3.11" _
               & vbCrLf & "4.3.2011","Nesprávne zadaný dátum")
                myTextBox.BackColor = prevColor
                myTextBox.Text = ""
                myTextBox.Focus()
            End Try
        Else
            myTextBox.BackColor = prevColor
        End If
    End Sub
'Volanie
 Private Sub TextBox1_Leave(ByVal sender As Object, ByVal e As System.EventArgs) Handles TextBox1.Leave
        MyDatum(TextBox1, TextBox1.Text, Color.Red)
    End Sub

nahlásit spamnahlásit spam 1 / 5 odpovědětodpovědět

Proč nepoužijete DataTimePicker?

nahlásit spamnahlásit spam 1 / 1 odpovědětodpovědět

Takto je to zadávanie oveľa rýchlejšie.

nahlásit spamnahlásit spam 1 / 3 odpovědětodpovědět

Jednak to není rychlejší a jednak je to ten nejzrůdnější způsob zadávání datumu, jaký jsem kdy viděl. Navíc to nebude fungovat pro jinou kulturu, než českou, takže například v anglických Windows neprojde "16.4.2011", přestože je to správně. Důkaz:

Module Module1
  Sub Main()
    My.Application.ChangeCulture("en-US")
    Console.WriteLine(CDate("16.4.2011"))
  End Sub
End Module

Řešením je použít DateTimePicker, kde nejde zadat neplatnou hodnotu, nebo když už to musíte dělat takto debilně, použijte Date.Parse s parametrem pro kulturu, kterou získáte například z My.Application.Culture.

Nejvyšší čas na FxCop.

nahlásit spamnahlásit spam 1 / 1 odpovědětodpovědět

Ďakujem za koštruktívnu kritiku. Skúste si pozrieť Excel ako sa tam zadávajú dátumy. A zapísať 2/2/24 je podľa mňa oveľa rýchlejšie, ako vyhľadať ten dátum v DateTimePicker. Inak ja asi mám anglické Windows aj keď angličania ma až tak veľmi nezaujímajú. Čo je to FxCop?

nahlásit spamnahlásit spam 1 / 3 odpovědětodpovědět

Správné je, když má komponenta obě možnosti, což DateTimePicker má. Někdy totiž datum vím z hlavy a chci ho jen napsat (typicky datum narození), ale někdy vím, že to bylo minulý pátek, ale to je sakra co za den?

nahlásit spamnahlásit spam 1 / 1 odpovědětodpovědět

Napríklad odpisujem dátumy z papiera. Je ich tam viac. Zapíšem 7/9/25, pôvodná farba TextBoxu sa vymaže, dátum je zapísaný správne a som na ďalšom TextBoxe. Že to nie je úplne korektné som napísal na začiatku, ale funguje a mne to stačí a možno sa to hodí aj inému. Ak by to niekomu nefungovalo, budem o tom rozmýšľať.

nahlásit spamnahlásit spam 0 / 2 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