Θέλω να δείξω πολλά πράγματα με αυτό το παράδειγμα ... αλλά ο κυριότερος είναι πώς μπορείτε να προσθέσετε τα γεγονότα σε μια ομάδα των ελέγχων κατά το χρόνο εκτέλεσης της Visual Basic. Net.
Για παράδειγμα, χρειαζόμαστε μια φόρμα με πολλούς ελέγχους textbox του (ανεξάρτητα από το πώς ονομάζονται). Μπορείτε να κάνετε κάτι σαν αυτό που έκανα.

Κάθε φορά που ο σχεδιαστής του στούντιο σας δώσει οπτική διπλό κλικ σε ένα στοιχείο ελέγχου έχει δημιουργηθεί ένα υπο ρουτίνα που θα είναι υπεύθυνη για τη διαχείριση της εκδήλωσης. Σε περίπτωση αδυναμίας πλαίσιο κειμένου στο TextChanged εκδήλωση και την οπτική στούντιο σχεδιαστής θα δημιουργήσει μια υπορουτίνα που ονομάζεται TextBox1_TextChanged αλλά στην πραγματικότητα το όνομα δεν έχει σημασία, θα μπορούσαμε να το αλλάξει και τίποτα δεν θα συμβεί. Το σημαντικό πράγμα είναι αυτό που βρίσκεται στο τέλος της γραμμής: "handles TextBox1.TextChanged". Αυτό δείχνει ότι η συστηματική «διαχείριση» του TextBox1.TextChanged εκδήλωση.
Μπορούμε να παραχωρήσει αυτούς τους "διαχειριστές" κατά το χρόνο εκτέλεσης και, όπως σε αυτό το παράδειγμα, μπορούμε να το κάνουμε με την ίδια λειτουργία για πολλαπλούς ελέγχους.
Η σύνταξη για να εισάγετε ένα άλλο handler είναι:
AddHandler Objeto.Evento, AddressOf MiRutina
και αφαιρέστε το χειριστή:
RemoveHandler Objeto.Evento, AddressOf MiRutina
Veramos τώρα το παράδειγμα στην ερώτηση: σε αυτό το παράδειγμα είναι ό, τι Arem προσθέσει δύο εκδηλώσεις για τον έλεγχο κάθε κουτάκι που έχουμε στη φόρμα. Οι εκδηλώσεις αυτές θα GotFocus (το οποίο εμφανίζεται όταν ο έλεγχος γίνεται εστίαση) και LostFocus (το οποίο εμφανίζεται όταν χάνει τον έλεγχο εστίαση). Όταν ο έλεγχος έχει εστίαση είναι να αλλάξετε το χρώμα του φόντου, στην περίπτωση αυτή, ένα κίτρινο. Και όταν χάνεις θα επιστρέψει στο κανονικό χρώμα.
Το πρώτο πράγμα είναι να προσθέσετε Arem Αυτές οι δύο κινήσεις.
ConFoco Private Sub (ByVal αποστολέα ως αντικείμενο, ByVal e Όσον System.EventArgs) DirectCast (αποστολέα, TextBox). BackColor = Color.Yellow Sub End SinFoco Private Sub (ByVal αποστολέα ως αντικείμενο, ByVal e Όσον System.EventArgs) DirectCast (αποστολέα, TextBox). BackColor = Color.White Sub End
Συνήθως, έχουμε τις δύο κινήσεις, αλλά ακόμα ... κανείς δεν τους ζητά. Γι 'αυτό πρέπει να προσθέσουμε σε κάθε κουτάκι ελέγχου στη φόρμα για να καλέσετε μια συνάρτηση handler ΘΕΣ.
Σε περίπτωση φόρτωσης της φόρμας προσθέστε τον ακόλουθο κώδικα:
Για κάθε γ Όπως Αντικείμενο Στο Me.Controls Αν c.GetType Είναι gettype (TextBox) Στη συνέχεια, AddHandler DirectCast (γ, TextBox). GotFocus, AddressOf conFoco AddHandler DirectCast (γ, TextBox). LostFocus, AddressOf sinFoco End If Επόμενη
Και Presto, μπορούμε να ελέγξουμε το πρόγραμμα και δεν χρειάζεται τίποτα άλλο. Όλα textbox αλλάξετε το χρώμα φόντου σας για να λάβει την εστίαση. Δεν έχει σημασία πόσοι είναι ή ό, τι είστε ονομάζεται.
στην παρακάτω εικόνα είναι η μορφή σε λειτουργία: 
Νομίζω ότι αξίζει να εξηγήσει λίγο την τελευταία κωδικό.
Για κάθε τρέχει σε όλα τα
Πληροφορίες Bitacoras.com ...
Τιμή στο Bitacoras.com: Θέλω να δείξω πολλά πράγματα με αυτό το παράδειγμα; αλλά ο κυριότερος είναι πώς μπορείτε να προσθέσετε τα γεγονότα σε μια ομάδα των ελέγχων κατά το χρόνο εκτέλεσης της Visual Basic. καθαρά. Για παράδειγμα, χρειαζόμαστε μια φόρμα με πολλούς ελέγχους ....
Σας ευχαριστούμε! Κωδικός καθαρό, απλό και λειτουργικό. Είσαι ένα φαινόμενο. Θα χρησιμοποιηθεί για πίνακες ελέγχου σε VB6 για αυτά τα πράγματα (όπως Miss ...), αλλά με αυτό το μικρό τέχνασμα είναι κομψά λυθεί.
Ευχαριστώ για αυτήν την εξαιρετική συμβολή, έχω αναπτύξει σε VB6 για 8 χρόνια και δεν είχε βρει έναν τρόπο να κάνουμε. Net, το οποίο έκανε σε VB6 με συστοιχία των ελέγχων, όπως γράφει ένα απλό γεγονός για κάθε μορφή TexBox και τον εντοπισμό ενός κάθε κατά Δείκτη. Με την υποστήριξή σας gan ξεπέρασε αυτή τη δυσκολία. ΕΥΧΑΡΙΣΤΩ
Γεια σας, πολύ καλή εξήγηση. Η addHandler Νομίζω ότι ένα ενδιαφέρον εργαλείο, αλλά έχω μια ερώτηση σχετικά με αυτό. Το χρησιμοποιώ σε asp.net και λειτουργεί μεγάλο, μπορώ να προσθέσω τα γεγονότα να συνδέει δυναμικά είδος, αλλά λειτουργεί μόνο αν η addHandler είναι το φορτίο. Υπάρχει κάποιος τρόπος που λειτουργεί δεν είναι το φορτίο εκεί;
Ευχαριστώ για όλα
σούπερ καλή αυτός ο κώδικας σώζει πολλές γραμμές, και του χρόνου.
Μπορείτε να κάνετε κάτι παρόμοιο αλλά και να επικυρώσει το πάτημα μόνο με αριθμούς, κλπ., αλλά κατά κάποιον τρόπο τον εντοπισμό κάθε κουτάκι να γνωρίζουμε ποιος να εφαρμόσετε μορφοποίηση ή που πρέπει να είναι μόνο αριθμοί, κείμενο, κλπ.. Ελπίζω να γίνει το σημείο σας.
Νομίζω ότι αν συνδυάσουμε αυτά που μαθαίνουν σε αυτό το άρθρο συν δύο από τα παρακάτω σύνδεσμο μπορείτε να το κάνετε.
http://www.solovb.net/index.php/2009/01/25/textbox-solo-numeros-validacion/~~V
http://www.solovb.net/index.php/2009/02/23/textbox-solo-letras-validacion/~~V
Τύχη.
Έχω μια λειτουργία κάπως παρόμοια με αυτά που αναφέρω εδώ, αλλά όταν προσπαθώ agregarselas στο πάτημα περίπτωση δεν μου πείτε ότι δεν έχουν την ίδια υπογραφή
Γεια σας, μου αρέσει το site σας και να θαυμάσετε την αφοσίωσή σας στο αξίωμα. Είμαι σήμερα φοιτούν στο πανεπιστήμιο και βοηθάει.
Χαιρετίσματα!
Γεια σας καλό κώδικα, αλλά είμαι μια άλλη εφαρμογή για τον έλεγχο και την άλλη περίπτωση, και όταν συμβαίνει ότι όταν λέω:
AddHandler miObjeto.evento, AddressOf miRutina
μου λέει ότι η μέθοδος «mirutina" έχει την ίδια υπογραφή με τον εκπρόσωπο.
Στο παράδειγμά σας, δεν μπορείτε να στείλετε τον παραμέτρους του εκπροσώπου και την εργασία για σας, που μπορεί να μου συμβαίνει;
Σας ευχαριστούμε εκ των προτέρων για τη βοήθειά σας ..
Είναι αλήθεια, στέλνω τις παραμέτρους γιατί πρέπει να στείλει οτιδήποτε (από την αποστολή για τον έλεγχο που προκάλεσε την εκδήλωση), αλλά πρέπει να ορίζεται στην πρόσκληση διαδικασία. Για παράδειγμα: Private Sub MiRutina (ByVal αποστολέα ως αντικείμενο, ByVal e Όσον System.EventArgs).
Τύχη
Γεια σου, αυτό είναι ένα καλό παράδειγμα της χρήσης των AddHandler και προστίθενται στοιχεία ελέγχου στη φόρμα.
Γι 'αυτό θέλω να συμβάλει λίγο μου με την προσθήκη ενός κώδικα για να προσθέσετε συμβάντα σε ελέγχους δημιουργήθηκε κατά το χρόνο εκτέλεσης.
Ένα χαιρετισμό.
----------------
PulsadoDobleClick Private Sub (ByVal αποστολέα ως αντικείμενο, ByVal e Όσον System.EventArgs)
MsgBox ("Πατήσατε διπλό κλικ")
Sub End
Private Sub Form1_Load (ByVal αποστολέα Όπως System.Object, ByVal e Όσον System.EventArgs) Λαβές MyBase.Load
Όπως Νέα κειμένουΈλεγχος Δημ. MiCajaDeTexto ()
MiCajaDeTexto.Name = "CajaDeTexto"
Me.Controls.Add (MiCajaDeTexto)
Me.Controls AddHandler (MiCajaDeTexto.Name). DoubleClick, AddressOf Me.PulsadoDobleClick
Sub End
Ευχαριστώ για τη βοήθειά σας, έφερα από το πρόβλημα. Κατάγομαι από VB6 και είναι πολύ διαφορετική, διάβασα κάπου ότι η Microsoft σκοπεύει να συμπεριλάβει νέες συστοιχίες των ελέγχων σε νέες εκδόσεις τους VB.NET με τον ίδιο τρόπο που διεξήχθησαν σε VB6. Αυτό θα καταστήσει τη ζωή ευκολότερη για όσους από εμάς της παλιάς VB6.
Εξαιρετική, μπορώ να προσθέσω μόνο ένα σχόλιο σχετικά με τη δυνατότητα της ανάθεσης μιας λειτουργίας που έχει παραμέτρους.
Μεγάλη ρουτίνα, μεγάλη βοήθεια για εκείνους που εξακολουθούν να μεταναστεύουν από την VB6. Net, Χάρη
»** Χρησιμοποιήστε το μόνο για ανάγνωση ιδιότητα να επεξεργαστείτε το πλαίσιο κειμένου σε μια δεδομένη GroupBox **"
Παράδειγμα στο έργο μου:
Private Sub Form1_Load (ByVal αποστολέα Όπως System.Object, ByVal e Όσον System.EventArgs) Λαβές MyBase.Load
«Βρείτε το σε ένα κουτάκι GroupBox
Για κάθε γ Όπως Ελέγχου Σε Me.grpDatosPasajero.Controls
Αν c.GetType Είναι gettype (TextBox) Στη συνέχεια,
AddHandler DirectCast (γ, TextBox). Εισάγετε, AddressOf conFoco
AddHandler DirectCast (γ, TextBox). Αφήστε, AddressOf sinFoco
End If
Επόμενη
Sub End
«Ρουτίνες
ConFoco Private Sub (ByVal αποστολέα ως αντικείμενο, ByVal e Όσον System.EventArgs)
Αν όχι DirectCast (αποστολέα, TextBox). Τότε μόνο για ανάγνωση
DirectCast (αποστολέα, TextBox). BackColor = Color.PaleGoldenrod
End If
Sub End
SinFoco Private Sub (ByVal αποστολέα ως αντικείμενο, ByVal e Όσον System.EventArgs)
Αν όχι DirectCast (αποστολέα, TextBox). Τότε μόνο για ανάγνωση
DirectCast (αποστολέα, TextBox). BackColor = Color.White
End If
Sub End
wav
Exelentes κωδικούς φίλους jejej οφείλω να ομολογήσω. garacias σε εύθετο χρόνο. Χαιρετίσματα σε όλους
Συμμερίζομαι αυτόν τον κώδικα στο relize με τη βοήθεια των σημειώσεων του, αυτό θα με βοηθήσει να δημιουργήσει όλες τις κουμπιά που χρειάζεστε και να το στείλετε για μια συνάρτηση με τους όρους που συνδέονται με το κουμπί πατημένο, το φως από ένα μεμονωμένο γεγονός
Δημόσια τάξη Φόρμα1
Δημ. lbls () Όπως Κουμπί
Private Sub Form1_Load (ByVal αποστολέα Όπως System.Object, ByVal e Όσον System.EventArgs) Λαβές MyBase.Load
Δημ. τοπ As Integer = 25
Για m As Integer = 0 έως 4
Διατήρηση ReDim lbls (m)
lbls (m) = Κουμπί Νέα
Με lbls (m)
. Κείμενο = ("Κουμπί" & M)
. Περιοχή = Νέο σημείο (0, LOC)
. Μέγεθος () = Νέα System.Drawing.Size (75, 23)
Με το τέλος
lbls (μ). Όνομα = m
Me.Controls.Add (lbls (μ))
Me.Controls AddHandler (lbls (μ). Όνομα). Κάντε κλικ, AddressOf Me.Click
loc = 25 +
Επόμενη
Sub End
Private Sub Κάντε κλικ (ByVal αποστολέα Ως αντικείμενο, ByVal e Όσον System.EventArgs)
Δημ. ι Όπως Κουμπί = αποστολέα
MsgBox ("Θα πατήσει το κουμπί" & j.Name)
Sub End
Τέλος κατηγορίας
Ελπίζω και θα είναι κάποια
Θέλω να δημιουργήσω μια TabPage και μέσα σε αυτό ένα datagridview κατά το χρόνο εκτέλεσης, και q επίσης να προσθέσετε αυτούς τους ελέγχους σε χρόνο σχεδίασης, αν κάποιος ξέρει πώς να το κάνουμε, εκτιμώ τη βοήθειά σας.
Θέλω να δημιουργήσω μια TabPage και μέσα σε αυτό ένα datagridview κατά το χρόνο εκτέλεσης, και επίσης να προσθέσω αυτά τα στοιχεία ελέγχου στην οθόνη basic.net σχεδιασμό οπτική, αν κάποιος ξέρει πώς να το κάνουμε, εκτιμώ τη βοήθειά σας.
Holas! ο καθένας! αυτό που συμβαίνει εδώ είναι ότι η ιδιοκτησία να δοθεί σε όλα κειμένου με:
Για κάθε γ Όπως Αντικείμενο Στο Me.Controls
αλλά αν kiero δώσει εξαιρέσεις σε ορισμένους ελέγχους, όπως κάνω ... για παράδειγμα, με ένα κουμπί kiero συμπληρώστε την φόρμα μου με λίγα txtbox σημειώσεις για τους φοιτητές, αλλά υπάρχουν και άλλες, όπως txtbox κώδικα, αναφέρουμε τις σημειώσεις μετά από κατά μέσο όρο kiero utlizo
Dim Sum (ιδ) As Double
Γ Δημ. Όπως Ελέγχου
Για κάθε γ Σε Me.Controls
Αν typeof γ Είναι κειμένουΈλεγχος συνέχεια
Άθροισμα (Val (c.Tag)) + = Val (c.Text)
End If
Επόμενη
Για κάθε γ Σε Me.Controls
Dim i As Integer
Αν typeof c είναι ετικέτα,
Αν c.Tag> = 0, τότε
Αν Val (c.Tag) = θ συνέχεια
c.Text = Sum (Ι) / Val (txtnn.Text)
i + = 1
End If
End If
End If
αλλά παίρνω όλα και ο μέσος όρος txtbox πάει στραβά
pepelepu, δοκιμάστε exluir όπως αυτό:
...
Για κάθε γ Σε Me.Controls
επιλέξτε c.Name περίπτωση
«Ελέγχους ώστε να αποκλείεται
περίπτωση "nameControl1" "nameControl2" "nameControl3"
βρόχος
άλλο περίπτωση
«Μπορώ να ελέγξω ελέγχου
Άθροισμα (Val (c.Tag)) + = Val (c.Text)
τέλος επιλέξτε
επόμενη
Χαιρετισμούς, πολύ ενδιαφέρων κώδικα.
Έχω μια ερώτηση για σένα, έχω αναπτύξει μια MenuStrip που διαβάζει τα στοιχεία από μια βάση δεδομένων, όχι ότι δεν μπορεί να εκχωρήσει ένα ακόμη handler είναι ή διαδικασία συμβάντος σε κάθε στοιχείο του MenuStrip ελέγχου ή ανέκτησε τα ονόματα της διαδικασίας και της DB, κάποια sugenrencia; Μπορώ να χρησιμοποιήσω το παράδειγμα αρχείου που μπορεί να βρεθεί στα επόμενα url: http://www.dotnethelp.co.uk/es/vb/108413/menu_strip_vbnet
Ευχαριστώ για τις προτάσεις
Ήμουν τρελός να μην είναι σε θέση να φωτιά μέχρι τα γεγονότα μεταξύ εδώ και να διαβάσετε
"Σε περίπτωση φόρτωσης της φόρμας προσθέστε τον ακόλουθο κώδικα:"
Μου λείπει αυτό ακριβώς, μερικές φορές χάνομαι σε προφανή πράγματα, χάρη xD
Μόλις άρχισα με τα γεγονότα και τους χειριστές και νομίζω ότι είναι περίπλοκη (για μένα), αλλά καλό να έχουμε ανθρώπους που συνεισφέρουν τις γνώσεις τους σε εμάς που principiamos ... ευχαριστώ Ελισσαιέ και όλοι όσοι έχουν συμπεριληφθεί κομμάτι τους.
Χαιρετίσματα!
Είμαι νέος σε αυτό και το βρίσκω ενδιαφέρον και πολύ καλό παράδειγμα σας, πώς θα μπορούσε να πάει δημόσια και να είναι σε θέση να καλέσετε από οποιαδήποτε μορφή, χάρη ...
ακούσετε μια ερώτηση αν δεν μπορώ να βοηθήσω.
Έχω να κάνω ένα πρόγραμμα να ελέγχει τον αγώνα με τα πλήκτρα κίνησης και θα ήθελα να μάθω πώς να αντιστοιχίσετε πλήκτρα με κουμπιά που θέτουν, από πάνω προς τα κάτω, αριστερά, δεξιά και όταν πατάτε το κουμπί πατημένο κάνει την προσομοίωση.
Αγαπητοί, ένα ερώτημα, πώς μπορεί να περάσει παραμέτρους για τη λειτουργία που αναφέρεται στην addessOf, η λειτουργία έχει μια παράμετρο (π.χ. IDBOTON), και για κάθε κουμπί που μπορώ να δημιουργήσω ψάχνω σε BD με πληροφορίες IDBOTON.
Σας ευχαριστώ πολύ για τη βοήθειά σας.
Έμαθα αυτό πριν από λίγο καιρό (1 ημέρα) LOL, αλλά φαίνεται περίπλοκη είναι πραγματικά εύκολη, ακόμα και καλέστε το φάσμα από ένα χαρακτηριστικό SQLCE χαιρετισμούς!
Γεια σας, πολύ ενδιαφέρουσα, εύχομαι να μπορούσε να μου πει πώς να εφαρμόσει τον κώδικα για να προσθέσετε τα γεγονότα κατά το χρόνο εκτέλεσης σε C #.
Ευχαριστώ, επίσης, είναι να προσθέσει το event Click του picturebox μου δημιουργήθηκε κατά το χρόνο εκτέλεσης.
Ευχαριστίες
Πολύ απλό αλλά πολύ πρακτικό. Σας ευχαριστώ πολύ
Γεια σου, εξαιρετική. Έχω μια ερώτηση, ο κωδικός αυτός λειτουργεί για τους ελέγχους που έχουν άμεση τοποθετούνται στη φόρμα. Αλλά το κάνουν να λειτουργήσει για τα εμπορευματοκιβώτια, χωρίς τοποθέτηση του φορτίου της φόρμας έναν κωδικό για κάθε εμπορευματοκιβώτιο;
Μπορείτε να δημιουργήσετε μια αναδρομική συνάρτηση που ελέγχει αν ο έλεγχος καλείται και πάλι.
Τότε θα σας αφήσει ένα παράδειγμα και θέλω να διευκρινίσω ότι δεν το έχω δοκιμάσει λόγω έλλειψης χρόνου, αλλά ήθελα να σας απαντήσω, όπως εγώ θα φύγουμε από εδώ.
Χρησιμοποιήστε το ως βάση για τη λειτουργία σας. Τύχη.
Private Sub Form1_Load (ByVal αποστολέα ως αντικείμενο, ByVal e Όσον System.EventArgs) Λαβές Me.Load
recorrerContenedores (Ι)
Sub End
Υπο recorrerContenedores (ByVal Όπως Ελέγχου γ)
Αν c.Controls.Count> 0 τότε
recorrerContenedores (γ)
Αλλού
«Προσθήκη Πόμολα
End If
Sub End
Γεια Αγαπητέ, θα ήθελα να ξέρω αν χάσετε ένα μέρος του εγγράφου, επειδή στο τέλος, ενώ εγώ διάβαζα φαίνεται να επρόκειτο να εξηγήσω λίγο κώδικα και είναι κάτι σαν αυτό:
Νομίζω ότι αξίζει να εξηγήσει λίγο την τελευταία κωδικό.
Για κάθε τρέχει σε όλα ...
Λείπει κάτι; θα μπορούσατε να συμπληρώσετε αν ναι; Σας ευχαριστώ και σας συγχαίρω για την συνεισφορά που κάνετε στην κοινότητα VB
γεια estubo buenaso αυτό, αλλά έχω ένα πρόβλημα, εάν έχετε συνειδητοποιήσει το έργο σας προσπαθεί να φορτώσει τη φόρμα .... και το πρόβλημά μου είναι δεν θέλω γι 'αυτό kiero ότι πατώντας το κουμπί πρόσθετο μου πρόσφατα, αρχίζει να λειτουργεί ως το χαμένο και πήρε από την εστίαση κάθε κουτάκι .. να με βοηθήσει σε αυτή τη γουλιά porfa reponde νωρίτερα χάρη ...
saludosss ....
Όχι απαραίτητα το addHandler πρέπει να είναι στο Load ... μπορείτε να το βάλετε όπου θέλετε. Εκτός από αυτό μπορείτε να χρησιμοποιήσετε (αν απαιτείται) τη δήλωση RemoveHandler για τη σύνδεση του ελέγχου εκδήλωση.
Wooow! Αυτό το παράδειγμα θα ήταν μια τεράστια βοήθεια, σας ευχαριστώ, πραγματικά. Αλλά φυσικά δεν μπορώ ^ ^ Χαιρετισμούς!