Καλώς ορίσατε στο dotNETZone.gr - Σύνδεση | Εγγραφή | Βοήθεια

Υπαρξιακά προβλήματα WinForms controls: Το NumericUpdown control

Φτιάχτηκε για να μας διευκολύνει τη ζωή, αλλά γιά κοιτάξτε τι ωραία που μας την κάνει μαντάρα άμα το ζορίσουμε... Απλά πραγματάκια: Εχω ένα NumericUpDown control σε μια φορμίτσα και θέλω ο άμοιρος να του δίνω τιμές και αυτό να τις παίρνει. Ολα καλά.

Ομως, για να πατήσουμε ένα Backspace εντός του NumericUpDown και να δούμε τι θα κάνει μόλις αλλάξουμε focus...ΣΩΣΤΑ μαντέψατε, δεν παίρνει default τιμή 0, αλλά κρατάει την παλιά του τιμή! Μόνο που το άτιμο δεν μας το δείχνει, και έτσι, ενώ είναι κενό οπτικά, στην πραγματικότητα έχει τιμή!

(Για να μην πω τι @%$#@#% έριξα που το είχα και databound σε object και αναρωτιόμουνα "γιατί βάζει έκπτωση ενώ του την έσβησα"; )

Σαν να μην μας έφταναν αυτά τα ψυχοπλακωτικά, έρχεται και ο τρόπος επίλυσης να μας κάνει τα νεύρα ακόμα πιό τσατσάλια. Για να δούμε τι έκανα λοιπόν στο LostFocus event (άλλοι λένε οτι καλύτερα βέβαια να το βάλουμε στο Validating):

Private Sub nmrDiscount_LostFocus(ByVal sender As Object, ByVal e As System.EventArgs) Handles nmrDiscount.LostFocus
   If nmrDiscount.Text.Equals(String.Empty) Then
      nmrDiscount.Value = 0
      nmrDiscount.Text = "0"
   End If
End Sub

Ωραία. Τι πιό απλό θα μου πείτε;

Για να σας πω κι εγώ με τη σειρά μου: ΠΟΙΟ ΤΕΧΤ PROPERTY ΡΕ ΠΑΛΗΚΑΡΙΑ; Αφού ούτε το Intellisense το βγάζει! Οκ, όλα τα Winforms controls ΥΠΟΤΙΘΕΤΑΙ οτι έχουν ένα text property, αλλά ΕΛΕΟΣ, οχι απλά πρέπει να το ελέγξω (γιατί αυτό είναι τελικά που γίνεται string.empty και όχι το value, αλλά να το ΑΛΛΑΞΩ κιόλας, γιατί αλλιώς το value μεν θα γίνει 0, εγώ θα συνεχίσω να βλέπω το απέραντο κενό στο NumericUpDown μου...)

Το πρόβλημα λύθηκε. Και τα νεύρα μου κορδέλες. Τα χάπια μου!

 

 

 

Έχουν δημοσιευτεί Δευτέρα, 2 Ιουλίου 2007 2:39 πμ από το μέλος cap
Δημοσίευση στην κατηγορία:

Ενημέρωση για Σχόλια

Αν θα θέλατε να λαμβάνετε ένα e-mail όταν γίνονται ανανεώσεις στο περιεχόμενο αυτής της δημοσίευσης, παρακαλούμε γίνετε συνδρομητής εδώ

Παραμείνετε ενήμεροι στα τελευταία σχόλια με την χρήση του αγαπημένου σας RSS Aggregator και συνδρομή στη Τροφοδοσία RSS με σχόλια

Σχόλια:

# re: Υπαρξιακά προβλήματα WinForms controls: Το NumericUpdown control

Τρίτη, 31 Ιουλίου 2007 9:54 μμ by nemesis

Τι γίνεται όμως αν έχει ρυθμιστεί το Minimum σε πχ 5. Τότε έχουμε exception!!! Ο παρακάτω κώδικας λειτουργεί καλύτερα...

   Private Sub nmrDiscount_LostFocus(ByVal sender As Object, ByVal e As System.EventArgs) Handles nmrDiscount.LostFocus

       Dim o As NumericUpDown = CType(sender, NumericUpDown)

       If o.Text.Equals(String.Empty) Then

           If o.Minimum > 0 Then

               o.Value = o.Minimum

               o.Text = Convert.ToString(o.Minimum)

           ElseIf o.Maximum < 0 Then

               o.Value = o.Maximum

               o.Text = Convert.ToString(o.Maximum)

           Else

               o.Value = 0

               o.Text = "0"

           End If

       End If

   End Sub

# re: Υπαρξιακά προβλήματα WinForms controls: Το NumericUpdown control

Τρίτη, 31 Ιουλίου 2007 10:10 μμ by cap

Σωστά! Ευχαριστώ για την διεύρυνση! Φαντάζομαι οτι σε έναν ιδανικό κόσμο ΙΣΩΣ κάποια στιγμή η Microsoft ενσωματώσει το όλο θέμα στο NumericUpDown Control. Ως τότε, προφανώς θα φτιάχνουμε τα δικά μας inherited πραγματάκια..:)

Ποιά είναι η άποψή σας για την παραπάνω δημοσίευση;

(απαιτούμενο)
απαιτούμενο
(απαιτούμενο)
ÅéóÜãåôå ôïí êùäéêü:
CAPTCHA Image