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

 

Αρχική σελίδα Ιστολόγια Συζητήσεις Εκθέσεις Φωτογραφιών Αρχειοθήκες

If και έλεγχος πολλών textboxes

Îåêßíçóå áðü ôï ìÝëïò Dark Dominion. Τελευταία δημοσίευση από το μέλος pantelee στις 08-03-2007, 02:46. Υπάρχουν 12 απαντήσεις.
Ταξινόμηση Δημοσιεύσεων: Προηγούμενο Επόμενο
  •  05-03-2007, 14:00 25901

    If και έλεγχος πολλών textboxes

    Πως μπορώ να ελέγξω αν όλα τα texboxes μου είναι άδεια;
    Προσπαθώ με if txt1.text="" and txt2.text="" and txt3.text="" αλλά το and είναι για το πολύ 2 textboxes καθώς είναι boolean.

    Κουλούρης Θάνος
  •  05-03-2007, 14:20 25904 σε απάντηση της 25901

    Απ: If και έλεγχος πολλών textboxes

    Δεν σε εμποδίζει κανείς να συνδυάσεις πολλά AND οπότε δεν βλέπω που είναι το πρόβλημα. Πάντως, καλύτερα να ελέγχεις για το μέγεθος των TextBox αντί για το περιεχόμενο τους, είναι πολύ γρηγορότερο, δηλαδή:

    If txt1.Text.Length=0 AND txt2.Text.Length=0 AND txt3.Text.Length=0

    Μπορείς όμως να κάνεις και το άλλο. Να προσθέσεις όλα τα textbox σε ένα πίνακα και μετά να χρησιμοποιήσεις την foreach για να δεις αν όλα τα textbox έχουν μέγεθος 0.


    Παναγιώτης Καναβός, Freelancer
    Twitter: http://www.twitter.com/pkanavos
  •  05-03-2007, 15:00 25907 σε απάντηση της 25904

    Απ: If και έλεγχος πολλών textboxes

    Μπορείς επίσης να δοκιμάσεις και την AndAlso αντί για την And.

    Ίσως με λίγο benchmarking διαπιστώσεις ότι είναι πιο γρήγορη. Ειδικά αν βάλεις στη σειρά τα textboxes σου ξεκινώντας από αυτό που είναι πιο πιθανό να ΜΗΝ είναι κενό. 


    Dimitris Papadimitriou
    Software Development Professional
    dotNETZone.gr News

    Οι απαντήσεις παρέχονται για συγκεκριμένες ερωτήσεις και χωρίς καμιά εγγύηση. Διαβάστε επίσης τους όρους χρήσης.
  •  05-03-2007, 15:31 25909 σε απάντηση της 25904

    Απ: If και έλεγχος πολλών textboxes

    Παναγιώτης Καναβός:
    If txt1.Text.Length=0 AND txt2.Text.Length=0 AND txt3.Text.Length=0


    μπορείς να το γράψεις κι έτσι:
    if (textbox1.text.length + textbox2.text.length + ....+ textbox.text.length = 0) then
  •  05-03-2007, 15:35 25910 σε απάντηση της 25909

    Απ: If και έλεγχος πολλών textboxes

    Νομίζω ότι όλα αυτά τα κόλπα μπορούν αν χρησιμοποιηθούν ανάλογα με το απαιτούμενο performance και maintainability. Το πιο κομψό είναι το for each, αλλά ίσως και το πιο αργό. Επειδή φαντάζομαι όμως ότι δεν υπάρχει τόσο μεγάλο θέμα performance, μάλλον είναι η ενδεδειγμένη λύση, ειδικά αν τα textboxes είναι πολλά (π.χ. περισσότερα από 5).

    Dimitris Papadimitriou
    Software Development Professional
    dotNETZone.gr News

    Οι απαντήσεις παρέχονται για συγκεκριμένες ερωτήσεις και χωρίς καμιά εγγύηση. Διαβάστε επίσης τους όρους χρήσης.
  •  05-03-2007, 17:05 25916 σε απάντηση της 25901

    Απ: If και έλεγχος πολλών textboxes

    Dark Dominion:
    αλλά το and είναι για το πολύ 2 textboxes καθώς είναι boolean.

    Να μείνω λίγο εδώ μια και το συζητάμε αυτό προς ενημέρωση και άλλων φίλων:

    Μια boolean μεταβλητή είναι μια μεταβλητή που μπορεί να πάρει μια εκ δύο τιμών: true ή false (0 ή 1). Ο τελεστής AND και οποιοσδήποτε άλλος τελεστής μπορεί να χρησιμοποιηθεί σε boolean μεταβλητές δεν χρειάζεται όμως να χρησιμοποιείται σε μια έκφραση που αποφέρει boolean αποτέλεσμα μία μόνο φορά. Συνεπώς η έκφραση 1 AND 0 AND 1 AND 1 δίνει αποτέλεσμα 0, ενώ η έκφραση 1 AND 1 AND 1 δίνει αποτέλεσμα 1.

    Γιατί; Αν σπάσει κανείς την έκφραση (1 AND 0 AND 1 AND 1) στα συνθετικά της μέρη θα δεί οτι:

    (πρωτη έκφραση) 1 AND 0  =  0

    Αντικαθιστούμε στην αρχική έκφραση: 0 AND 1 AND 1

    (παίρνουμε πάλι την πρώτη έκφραση από το αποτέλεσμα) 0 AND 1 = 0

    Αντικαθιστούμε στην αρχική έκφραση: 0 AND 1

    Και φυσικά αυτό μας δίνει 0.

    Αρα λοιπον και στα checkboxes μπορεί κανείς να έχει πολλαπλούς τελεστές AND όπως και οπουδήποτε αλλού. Η έκφραση checkbox1.text="" είναι μια boolean έκφραση που δίνει αποτέλεσμα true = false όταν χρησιμοποιηθεί στο IF.

     

     

     


    Σωτήρης Φιλιππίδης

    DotSee Web Services

    View Sotiris Filippidis's profile on LinkedIn

    DotNetNuke them!
  •  06-03-2007, 10:17 25946 σε απάντηση της 25916

    Απ: If και έλεγχος πολλών textboxes

    Υπάρχουν βέβαια και τα predicates που δίνουν έναν αρκετά πιο κομψό τρόπο! Ουσιαστικά προσθέτουμε όλα τα textboxes σε ένα List (κατά προτίμηση generic για να αποφεύγουμε τα castings) και εκτελούμε την συνάρτηση TrueForAll. Αυτή παίρνει σαν όρισμα τον pointer μια συνάρτησης η οποία επιστρέφει boolean. Σε αυτήν ελέγχουμε αν ένα textbox είναι κενό ή όχι.

        Private TextBoxes As New Generic.List(Of TextBox)

        Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
            TextBoxes.Add(TextBox1)
            TextBoxes.Add(TextBox2)
            TextBoxes.Add(TextBox3)
        End Sub

        Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
            Dim result As Boolean = TextBoxes.TrueForAll(AddressOf IsEmpty)
            MessageBox.Show("All empty: " & result.ToString)
        End Sub

        Private Function IsEmpty(ByVal TextBox As TextBox) As Boolean
            Return (TextBox.Text.Length = 0)
        End Function


    Dimitris Papadimitriou
    Software Development Professional
    dotNETZone.gr News

    Οι απαντήσεις παρέχονται για συγκεκριμένες ερωτήσεις και χωρίς καμιά εγγύηση. Διαβάστε επίσης τους όρους χρήσης.
  •  06-03-2007, 12:19 25957 σε απάντηση της 25946

    Απ: If και έλεγχος πολλών textboxes

    Και επιπλέον, μπορείς να κάνεις ένα foreach στο Controls collection για να τα βρεις τα TextBox. Το σκέφτηκα και αυτό αλλά δεν το ανέφερα γιατί μου φάνηκε ότι θα ξεφεύγαμε λιγάκι πλέον Wink. Σε C# βέβαια, αντί για delegate θα βάζαμε ένα anonymous function!

    Πέρα από τους τρόπους που μπορεί να κάνει κάποιος τον έλεγχο, αναρωτιέμαι το γιατί να κάνει κανείς ένα τέτοιο έλεγχο? Αν είναι για λόγους validation, υπάρχει και η ValidateChildren method της φόρμας η οποία θα προκαλέσει την εκτέλεση των Validating event των controls. Μου φαίνεται καλύτερο να εκτελούνται τα validations για κάθε control σε ένα event ειδικά για το control, παρά να μαζευτούν όλα μαζί σε ένα σημείο.


    Παναγιώτης Καναβός, Freelancer
    Twitter: http://www.twitter.com/pkanavos
  •  07-03-2007, 00:00 26006 σε απάντηση της 25957

    Απ: If και έλεγχος πολλών textboxes

    Ή μπορείς να κάνεις μία συνάρτηση

    Private Function AllEmpty(ParamArray TxtBox()) As Boolean
    Static N As Integer
    For N = LBound(TxtBox) To UBound(TxtBox)
      If Not TxtBox(N).Text = "" Then
        AllEmpty = False
        Exit Function
      End If
    Next N
    AllEmpty = True
    End Function

    την οποία καλείς ως εξής (εδώ π.χ. για 3 TextBox, με το ParamArray δίνεις όσα θέλεις)

    If AllEmpty(Text1, Text2, Text3) Then
      ...
    End If
  •  07-03-2007, 00:45 26009 σε απάντηση της 26006

    Απ: If και έλεγχος πολλών textboxes

    Έχεις χρησιμοποιήσει πάρα πολλές συναρτήσεις οι οποίες υπάρχουν πλέον στην γλώσσα καθαρά για λόγους συμβατότητας με τις προηγούμενες εκδόσεις.
    Καλό θα ήτανε να αποφεύγουμε να δίνουμε τέτοια παραδείγματα σε νέους χρήστες, και να χρησιμοποιούμε τις καινούργιες συναρτήσεις τις οποίες παρουσιάζουν οι γλώσσες.
    Ακόμη καλύτερο θα ήτανε κι εμείς οι ίδιοι να τις αποφεύγουμε και να προσαρμοζόμαστε.. Αλλά αυτό είναι μια άλλη ιστορία.

    Παναγιώτης Κεφαλίδης

    "Για να επιτύχεις, θα πρέπει το πάθος σου για την επιτυχία να είναι μεγαλύτερο απο τον φόβο σου για την αποτυχία"

    Οι απαντήσεις παρέχονται για συγκεκριμένες ερωτήσεις και χωρίς καμιά εγγύηση. Παρακαλώ διαβάστε τους όρους χρήσης.
  •  07-03-2007, 02:54 26016 σε απάντηση της 26009

    Απ: If και έλεγχος πολλών textboxes

    Αν και δεν παραθέτεις το κείμενό μου, μάλλον σε μένα αναφέρεσαι.

    Δεν είχα καταλάβει κάτι τέτοιο. Αλλά αυτός είναι ο τρόπος που προγραμματίζω. Έχω αφήσει και λευκό το βιογραφικό μου. Δεν είμαι νέος χρήστης αλλά και ούτε ιδιαίτερα παλιός. Επίσης είμαι ερασιτέχνης, αυτοδίδακτος και η εμπειρία μου περιορίζεται μόνο στην VB6 (και κάποτε στην Basic, Fortran και τέτοια). Ίσως το όλο θέμα αφορά το ότι δεν ξέρω καθόλου την .ΝΕΤ. Και με τα Collections δεν τα πάω καλά. Τα περί συμβατότητας δεν τα γνωρίζω καθόλου. Απλώς αυτή η συνάρτηση μου φάνηκε πιο δόκιμη από τα AND, AND, ...

    Η αλήθεια είναι ότι σήμερα μεράκλωσα ίσως λίγο παραπάνω. Αλλά αν έχω δώσει την εντύπωση ενός έμπειρου και παραδοσιακού, δεν είμαι αυτός. Αν έχω μείνει πίσω, αυτό είναι άλλο...
  •  07-03-2007, 03:56 26017 σε απάντηση της 26016

    Απ: If και έλεγχος πολλών textboxes

    Προς θεού, δεν το είπα για να απολογηθείς/δικαιολογηθείς ή κάτι τέτοιο!Ήταν απλά μια παρατήρηση προς όλους μας, γιαυτό μιλάω και με "γενικόλογα" προς το τέλος του post.
    Απλά όταν κάποιος ξεκινάει να ασχολείτε (και κάνει μια ερώτηση στο "Πρώτα βήματα"), ίσως είναι προτιμότερο να του λέμε τα "τελευταία νέα".

    Πίσω δεν μένει κανείς, ειδικά όταν το κάνεις για hobby. Όλοι οι παλαιοί αλλάξανε γιατι έπρεπε/χρειαζότανε να αλλάξουνε, όχι γιατί το θέλανε (επαγγελματίες έτσι?).

    Ελπίζω μόνο να μην σε αποθαρύνει το post μου και "φύγεις"!Huh?Confused


    Παναγιώτης Κεφαλίδης

    "Για να επιτύχεις, θα πρέπει το πάθος σου για την επιτυχία να είναι μεγαλύτερο απο τον φόβο σου για την αποτυχία"

    Οι απαντήσεις παρέχονται για συγκεκριμένες ερωτήσεις και χωρίς καμιά εγγύηση. Παρακαλώ διαβάστε τους όρους χρήσης.
  •  08-03-2007, 02:46 26093 σε απάντηση της 26017

    Απ: If και έλεγχος πολλών textboxes

    Ούτε λόγος για αυτό. Όλα καλά και καλοπροαίρετα. Συνοδοιπόροι...
    Yes
Προβολή Τροφοδοσίας RSS με μορφή XML
Με χρήση του Community Server (Commercial Edition), από την Telligent Systems