Νομίζω ότι δεν έχουμε συνεννοηθεί... Ανακεφαλαίωση: Δεν υπάρχει θέμα προβλήματος! Η Parse μέθοδος θα ερμηνεύσει έναν από τους δύο χαρακτήρες (κόμμα ή τελεία) ως τον χαρακτήρα που υποδηλώνει την έναρξη των δεκαδικών ψηφίων, ανάλογα με τα regional settings του υπολογιστή. Δεν γίνεται να ερμηνεύσει και τα δύο ως υποδιαστολές. Απο εκεί και πέρα όλα τα προγράμματα ακολουθούν αυτήν την λογική. Δεν είναι δουλειά του προγράμματος να ξέρει ποιος χαρακτήρας είναι η υποδιαστολή. Επιπρόσθετα οι χρήστες θα πρέπει να έχουν ένα consistency στον τρόπο που δίνουν τα νούμερα. Αν ένας χρήστης χρησιμοποιήσει το πρόγραμμά σου και εισάγει δεκαδικούς με το κόμμα ως υποδιαστολή και κατόπιν το EXCEL όπου υποδιαστολή είναι η τελεία (για το Ελληνικό locale), θα νιώθει πολύ μπερδεμένος. Αυτά ως προς το UI. Στον κώδικα τώρα, είτε πρόκειται για SQL, είτε για C#, είτε για VB.NET, η υποδιαστολή είναι πάντοτε η τελεία. Από την άλλη μεριά με την Parse, δεν χρειάζεται να ασχοληθείς πώς ένα string που το πέρνεις από κάποιο textbox, θα μετατραπεί σε double/decimal. Garbage-in, garbage-out.
Ουσιαστικά το θέμα σου είναι πως θα κάνεις σωστό validation. Αν θέλεις κατά το data entry να επιτρέπεις μόνο την υποδιαστολή τότε μπορείς να διαβάσεις ποιός είναι ο χαρακτήρας της υποδιαστολής χρησιμοποιώντας την
Dim decSep As Char = System.Globalization.CultureInfo.CurrentCulture.Nu mberFormat.NumberDecimalSeparator
Αντίστοιχα, το
Dim grpSep As Char = System.Globalization.CultureInfo.CurrentCulture.Nu mberFormat.NumberGroupSeparator
σου δίνει τον χαρακτήρα για grouping (δεκάδες, χιλιάδες, κλπ). Κατόπιν, μπορείς είτε στο KeyPress/KeyUp/KeyDown να κόβεις αυτόν τον χαρακτήρα, είτε στο Validate event να ελέγχεις αν περιέχεται στο string.
Vir prudens non contra ventum mingit