Chcę pokazać kilka rzeczy w tym przykładzie ... ale głównym z nich jest dodawaniu zdarzeń do grupy kontrolnej w czasie wykonywania w Visual Basic. NET.
Na przykład musimy formularz z wielu formantów TextBox-tych (bez względu na ich nazwę). Możesz zrobić coś takiego, co zrobiłem.

Za każdym razem projektant Visual Studio dać kliknąć dwukrotnie formant jest utworzona podstrefa procedurę, która będzie odpowiedzialna za obsługę danej imprezy. W przypadku uchybienia ze pole tekstowe do zdarzenie TextChanged i wizualny projektant studio stworzy podprogram o nazwie TextBox1_TextChanged ale w rzeczywistości nazwa nie jest istotna, możemy ją zmienić i nic się nie stanie. Ważną rzeczą jest to, co jest na końcu linii: "Uchwyty TextBox1.TextChanged". Oznacza to, że rutyna "zarządzanie" w TextBox1.TextChanged wydarzenie.
Możemy przypisać te "obsługi" w czasie wykonywania i, jak w tym przykładzie, możemy to zrobić za pomocą tej samej funkcji dla wielu kontroli.
Składnia wprowadzić inny program obsługi jest:
AddHandler Objeto.Evento, AddressOf MiRutina
i usunąć Handler:
RemoveHandler Objeto.Evento, AddressOf MiRutina
Veramos teraz przykład w pytaniu: w tym przykładzie, co jest arem dodać dwa zdarzenia do każdego formantu TextBox, że mamy na formularzu. Te wydarzenia będą GotFocus (który pojawia się, gdy kontrola trwa ostrość) i LostFocus (który pojawia się, gdy kontrola traci fokus). Kiedy kontrola nie koncentruje się na zmianę koloru tła, w tym przypadku żółtego. A kiedy straci się powrócić do normalnego koloru.
Pierwszą rzeczą jest dodanie arem te dwie procedury.
ConFoco Private Sub (ByVal sender As Object, E ByVal As System.EventArgs) DirectCast (nadawca, TextBox). BackColor = Color.Yellow End Sub SinFoco Private Sub (ByVal sender As Object, E ByVal As System.EventArgs) DirectCast (nadawca, TextBox). BackColor = Color.White End Sub
Zwykle mamy dwie procedury, ale nadal ... nikt nie nazywa ich. Do tego musimy dodać każdy formant TextBox w formularzu do zwołania Tes funkcje uchwytu.
W formie imprezy obciążenia dodać następujący kod:
Dla każdego C jako obiekt w Me.Controls Jeśli c.GetType Czy GetType (TextBox) Następnie AddHandler DirectCast (c, TextBox). GotFocus, AddressOf conFoco AddHandler DirectCast (c, TextBox). LostFocus, AddressOf sinFoco End If Następny
I gotowe, możemy testować program i nie potrzebują niczego innego. Wszystko TextBox zmienić kolor tła wziąć ostrość. Nieważne ile są lub cokolwiek oni tzw.
na zdjęciu poniżej jest forma w pracy: 
Myślę, że warto wyjaśnić się nieco ostatni kod.
Za każde działa na wszystkich
Informacje Bitacoras.com ...
Kurs w Bitacoras.com: chcę pokazać kilka rzeczy z tego przykładu? ale głównym z nich jest dodawaniu zdarzeń do grupy kontrolnej w czasie wykonywania w Visual Basic. netto. Na przykład musimy formularz z wieloma kontroli ....
Dziękujemy! Kod czyste, proste i funkcjonalne. Jesteś fenomenem. Kiedyś tablice kontrolne w VB6 do tych rzeczy (jak pani ...), ale z tym mały trick jest elegancko rozwiązany.
Dzięki za tego wspaniałego wkładu, wyrobiłem w VB6 przez 8 lat i nie znalazł sposób do zrobienia. Net, który uczynił w VB6 z zestaw kontrolek, takich jak pisanie pojedyncze wydarzenie dla wszystkich formularzu TexBox i zidentyfikować każdy co Index. Z twojego wsparcia gan pokonaliśmy tę trudność. DZIĘKI
Witam, bardzo dobre wytłumaczenie. AddHandler Myślę, że ciekawe narzędzie, ale mam pytanie odnośnie tego produktu. Używam go w asp.net i działa świetnie, mogę dodać zdarzenia do dynamicznie łączy gatunek, ale tylko wtedy, gdy AddHandler jest w obciążeniu. Czy istnieje jakiś sposób, że działa nie będąc w obciążeniu?
Dzięki za wszystko
bardzo dobry ten kod zapisuje wiele linii, i czasu.
Można zrobić coś podobnego, ale do sprawdzania naciśnięcia klawisza z tylko liczby, itd, ale jakoś identyfikacji każdy tekstowe wiedzieć, kto do zastosowania formatowania albo że musi być tylko liczby, tekst itp.. Mam nadzieję, że się twój punkt widzenia.
Myślę, że jeśli połączyć to, co się w tym artykule plus dwa na poniższy link możesz to zrobić.
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
Powodzenia.
Mam funkcję nieco podobną do tych, które tutaj wspomnieć, ale gdy próbuję agregarselas w keypress razie nie mów mi, że nie mają ten sam podpis
Witam, chciałbym swoją stronę i podziwiaj swoje zaangażowanie w poście. Jestem obecnie studiuje na uniwersytecie i pomaga.
Pozdrowienia!
Witaj dobry kod, ale mam ubiegania się o innej kontroli i inne ważne wydarzenie, a kiedy zdarza się, że gdy mówię:
AddHandler miObjeto.evento, AddressOf miRutina
mówi mi, że metoda "mirutina" ma ten sam podpis jako delegata.
W przykładzie nie można wysłać mu parametry delegata i pracować dla Ciebie, które mogą być ze mną dzieje?
Z góry dziękuję za pomoc ..
To prawda, mam wysłać parametry, ponieważ mają do wysłania czegokolwiek (są one wysyłane do kontroli, który wywołał zdarzenie), lecz musi być określony w zaproszeniu procedury. Na przykład: Private Sub MiRutina (ByVal sender As Object, E ByVal As System.EventArgs).
Szczęście
Cześć, to jest dobrym przykładem wykorzystania AddHandler i dodał kontroli do formularza.
Dlatego chcę przyczynić się mój kawałek, dodając kod do dodawania zdarzeń do kontroli utworzonych przy starcie.
Pozdrowienia.
----------------
PulsadoDobleClick Private Sub (ByVal sender As Object, E ByVal As System.EventArgs)
MsgBox ("Jesteś wciśnięty Kliknij dwukrotnie")
End Sub
Private Sub Form1_Load (ByVal sender Jak System.Object i ByVal e As System.EventArgs) Handles MyBase.Load
Jak New TextBox MiCajaDeTexto Dim ()
MiCajaDeTexto.Name = "CajaDeTexto"
Me.Controls.Add (MiCajaDeTexto)
Me.Controls AddHandler ust MiCajaDeTexto.Name). DoubleClick, AddressOf Me.PulsadoDobleClick
End Sub
Dzięki za pomoc, przywiozłem z dala od kłopotów. Pochodzę z VB6 i jest bardzo różna, czytałem gdzieś, że Microsoft zamierza objąć nowe tablice kontroli w ich nowych wersji VB.NET w ten sam sposób były one obsługiwane w VB6. To ułatwi życie dla tych z nas, starych VB6.
Świetne, po prostu dodać komentarz na temat możliwości przypisania funkcji, która ma parametry.
Wielki rutyna, wielka pomoc dla tych, nadal migracji z VB6 do. Net, dzięki
"** Użyj właściwość ReadOnly edytować pole tekstowe w danym GroupBox ** '
Przykład w moim projekcie:
Private Sub Form1_Load (ByVal sender Jak System.Object i ByVal e As System.EventArgs) Handles MyBase.Load
"Znajdź pole tekstowe w GroupBox
Dla każdego C jako Kontroli Me.grpDatosPasajero.Controls
Jeśli c.GetType Czy GetType (TextBox) Następnie
AddHandler DirectCast (c, TextBox). Enter AddressOf conFoco
AddHandler DirectCast (c, TextBox). Zostaw, AddressOf sinFoco
End If
Następny
End Sub
"Procedury
ConFoco Private Sub (ByVal sender As Object, E ByVal As System.EventArgs)
Jeśli nie DirectCast (nadawca, TextBox). ReadOnly Następnie
DirectCast (nadawca, TextBox). BackColor = Color.PaleGoldenrod
End If
End Sub
SinFoco Private Sub (ByVal sender As Object, E ByVal As System.EventArgs)
Jeśli nie DirectCast (nadawca, TextBox). ReadOnly Następnie
DirectCast (nadawca, TextBox). BackColor = Color.White
End If
End Sub
wav
Exelentes kody przyjaciele jejej muszę przyznać. garacias w odpowiednim czasie. Pozdrowienia dla wszystkich
Podzielam ten kod do relize z pomocą swoich notatkach, to pomoże mi tworzyć wszystkie przyciski potrzebne i wysłać do funkcji z warunków związanych z wciśniętym przyciskiem, światło z jednego zdarzenia
Public Class Form1
Dim lbls () jako Buttona
Private Sub Form1_Load (ByVal sender Jak System.Object i ByVal e As System.EventArgs) Handles MyBase.Load
Dim loc As Integer = 25
Dla m As Integer = 0 To 4
ReDim Preserve lbls (m)
lbls (m) = new Button
Z lbls (m)
. Text = ("Przycisk" & m)
Lokalizacja. = Nowy pkt (0, loc)
. Rozmiar () = New System.Drawing.Size (75, 23)
End With
lbls (m). Name = m
Me.Controls.Add (lbls (m))
Me.Controls AddHandler ust lbls (m). Nazwisko). Kliknij, AddressOf Me.Click
loc + = 25
Następny
End Sub
Private Sub Kliknij (ByVal sender As Object, E ByVal As System.EventArgs)
Dim j Jako = przycisk nadawcy
MsgBox ("Po naciśnięciu przycisku" & j.Name)
End Sub
End Class
Mam nadzieję i będzie niektórych
Chcę stworzyć TabPage iw ten datagridview przy starcie, a q także dodać te kontrole w czasie projektowania, jeśli ktoś wie jak to zrobić, doceniam twoją pomoc.
Chcę stworzyć TabPage iw ten datagridview w czasie wykonywania, a także dodać te kontrole na ekranie projektowania Visual Basic.NET, jeśli ktoś wie jak to zrobić, doceniam twoją pomoc.
Holas! wszyscy! co się dzieje jest to, że nieruchomość dać wszystkie tekstowe z:
Dla każdego C jako obiekt w Me.Controls
ale jeśli kiero dać wyjątki niektórych kontroli jak ja ... na przykład za pomocą jednego przycisku kiero wypełnić mój formularz z kilkoma txtbox notatki dla studentów, ale istnieją inne txtbox takie jak kod, wymienić uwagi po uśrednieniu kiero utlizo
Dim Sum (n) As Double
Dim c Jak Kontroli
Dla każdego C w Me.Controls
Jeśli typeof c jest TextBox Następnie
Sum (Val (c.Tag)) + = Val (c.Text)
End If
Następny
Dla każdego C w Me.Controls
Dim i As Integer
Jeśli typeof c jest Label Następnie
Jeśli c.Tag> = 0 Then
Jeśli Val (c.Tag) = i wtedy
c.Text = Sum (I) / Val (txtnn.Text)
i + = 1
End If
End If
End If
ale wezmę wszystko i średni txtbox idzie źle
pepelepu, spróbuj exluir tak:
...
Dla każdego C w Me.Controls
wybierz c.Name przypadek
"Kontroluje, aby wykluczyć
case "nameControl1" "nameControl2" "nameControl3"
pętla
inny przypadek
Ja steruje
Sum (Val (c.Tag)) + = Val (c.Text)
End Select
następny
Pozdrawiam, bardzo ciekawy kod.
Mam do Ciebie pytanie, mam opracowała MenuStrip który odczytuje elementy z bazy danych, a nie, że nie mogę nawet przypisać obsługi jest lub procedurę zdarzenia do każdego elementu MenuStrip kontrola lub pobieranie nazwy procedury DB dobrze, niektóre sugenrencia? Używam przykładowy plik, który można znaleźć w url Ławka rezerwowych: http://www.dotnethelp.co.uk/es/vb/108413/menu_strip_vbnet~~HEAD=dobj
Dzięki za sugestie
Miałem zamiar szalony nie jest w stanie wystrzelić wydarzenia aż między tutaj i przeczytaj
"W postaci imprezy obciążenia dodać następujący kod:"
Po prostu brakuje go, czasem gubię się w rzeczy oczywiste, dzięki xD
Właśnie rozpoczęła się z wydarzeniami i treserzy i myślę, że jest złożona (dla mnie), ale dobrze jest mieć ludzi, którzy przyczyniają się swoją wiedzą z nas, którzy principiamos ... dziękuję Elizeusz i wszystkich, którzy włączone ich trochę.
Pozdrowienia!
Jestem nowy w tym i uważam to za interesujące i bardzo dobry dobry przykład, jak można wejść na giełdę i będą mogli dzwonić z dowolnej formie ... dzięki
usłyszeć pytanie jeśli nie mogę pomóc.
Mam do zrobienia program do kontrolowania gry za pomocą klawiszy ruchu i chciałbym wiedzieć, jak przypisać klawisze do przycisków, które wprowadzane od góry do dołu, w lewo, w prawo i po naciśnięciu przycisku wciśnięty zrobić symulację.
Szanowni Państwo, kwerenda, jak mogę przekazać parametry do funkcji, którą wskazano w addessOf, funkcja ma parametr (np. IDBOTON), a dla każdego przycisku, który tworzę patrzę w BD informacji IDBOTON.
Dziękuję bardzo za pomoc.
Nauczyłem się tego nie tak dawno temu (1 dzień) lol ale wydaje się skomplikowany, jest naprawdę proste, nawet nazwać zakres funkcji od A pozdrowienia SQLCE!
Witam, bardzo ciekawy, życzę mogli mi powiedzieć, jak zastosować ten kod do dodawania zdarzeń w czasie wykonywania w C #.
Dzięki, też jest dodanie do klikania wydarzenie PictureBox stworzyłem przy starcie.
Dzięki
Bardzo proste, ale bardzo praktyczne. Dziękuję bardzo
Witam, doskonała. Mam pytanie, ten kod działa na kontroli, które są bezpośrednio umieszczone na formularzu. Ale to działało do pojemników bez umieszczania w postaci load kod dla każdego kontenera?
Możesz stworzyć rekurencyjną funkcję, która sprawdza, czy kontrola jest wywoływana ponownie.
Wtedy zostawiam wam przykład i chcę wyjaśnić, że nie testowałem z braku czasu, ale chciałam ci odpowiedzieć jak zostawię cię tutaj.
Użyj go jako podstawy dla swojej funkcji. Powodzenia.
Private Sub Form1_Load (ByVal sender As Object, E ByVal As System.EventArgs) Handles Me.Load
recorrerContenedores (I)
End Sub
Sub recorrerContenedores (ByVal c Jako Control)
Jeśli c.Controls.Count> 0 Then
recorrerContenedores (c)
Więcej
'Dodaj uchwyty
End If
End Sub
Witaj Drogi, chciałem wiedzieć, czy tęsknię za część dokumentu, ponieważ w końcu, podczas gdy czytałem wydaje się, że będziemy wyjaśniać trochę kodu i jest mniej więcej tak:
Myślę, że warto wyjaśnić się nieco ostatni kod.
Za każde działa na wszystkich ...
Czegoś brakuje? można go wypełnić, jeśli tak? Dziękujemy i gratulujemy za wkład można wnieść do wspólnoty VB
witam estubo buenaso że jednak mam problem, jeśli stwierdzisz, że twój projekt działa załadować formularz .... dobrze mój problem jest nie chcę więc kiero że naciśnięcie mój przycisk Dodaj ostatnio zaczyna funkcjonować jako zagubionego, ale ostrość każdy tekstowe .. mi pomóc w tym sip porfa reponde prędzej dzięki ...
saludosss ....
Niekoniecznie AddHandler musi być w obciążeniu ... możesz go umieścić w dowolnym miejscu. Poza tym można korzystać (jeśli wymagane) oświadczenie RemoveHandler dla stowarzyszenia kontroli zdarzeń.
Wooow! Ten przykład byłem ogromna pomoc, dziękuję, naprawdę. Ale oczywiście nie może ^ ^ Pozdrowienia!