Pievienot izpildes laika notikumiem panta addHandler)

Es gribu parādīt vairākas lietas, ar šo piemēru ... bet galvenais ir, kā pievienot notikumus grupai kontroles pie Runtime Visual Basic. Net.

Piemēram mums ir nepieciešama forma ar daudzām vadības textbox (savstarpēji vienalga, cik viņi sauc). Jūs varat darīt kaut ko līdzīgu, ko es darīju.

Katru reizi no Visual Studio projektētājs dod jums divreiz uzklikšķiniet kontrole tiek izveidots apakšpasākums rutīnas, kas būs atbildīga par notikumu. Ja tekstlodziņa nepildīšanu pret TextChanged notikuma un Visual Studio dizaineru radīs subroutine sauc TextBox1_TextChanged bet patiesībā vārds nav svarīgs, mēs varētu mainīt to, un nekas varētu notikt. Svarīgi ir tas, kas beigās līnijas: "Rokturi TextBox1.TextChanged". Tas liecina, ka regulāra "pārvaldīt" uz TextBox1.TextChanged notikumu.

Mēs varam piešķirt šos "manipulatori" pie palaist laikā un, kā šajā piemērā, mēs varam darīt, izmantojot to pašu funkciju vairākām kontroles.

Sintakse, lai ievadītu citu kādu apdarinātājs ir:

 AddHandler Objeto.Evento, AddressOf MiRutina

un noņemt apdarinātājs:

 RemoveHandler Objeto.Evento, AddressOf MiRutina

Veramos tagad piemērs attiecīgais: Šajā piemērā, kas ir arem pievienot divus notikumus katram textbox kontroli, kas mums ir uz veidlapas. Šie notikumi tiks GotFocus (kas notiek, ja pārbaudē ņem fokusu) un LostFocus (kas notiek, ja kontrole zaudē fokusu). Kad kontrole ir uzmanības centrā ir mainīt fona krāsu, šajā gadījumā dzeltena. Un, kad jūs zaudējat jūs atgriezties normālā krāsā.
Pirmā lieta ir pievienot arem šīs divas kārtība.

 ConFoco Private Sub (ByVal sūtītājs Kā Object, ByVal e As System.EventArgs)
     DirectCast (sūtītājs, Tekstlodziņš). BackColor = Color.Yellow
 End Sub

 SinFoco Private Sub (ByVal sūtītājs Kā Object, ByVal e As System.EventArgs)
     DirectCast (sūtītājs, Tekstlodziņš). BackColor = Color.White
 End Sub

Parasti, mums ir divas rutīnu, bet tomēr ... neviens aicina tos. Tādēļ mums ir vajadzīgs, lai pievienotu katru kontroles textbox uz veidlapas, lai piezvanītu pārkraušanas funkcijas preces.

Pēc formas Load gadījumā pievienot šādu kodu:

 Katrai C, kā objekta Me.Controls
     Ja c.GetType Vai GetType (Tekstlodziņš) Tad
         AddHandler DirectCast (c, Tekstlodziņš). GotFocus, AddressOf conFoco
         AddHandler DirectCast (c, Tekstlodziņš). LostFocus, AddressOf sinFoco
     Beigas Ja
 Nākamais

Un Presto, mēs varam pārbaudīt programmu un nav nepieciešams kaut kas cits. Visi textbox mainīt fona krāsu, lai ņemtu fokusu. Nav svarīgi, cik daudz ir vai kāds viņi sauc.

attēlā zemāk ir darbojas forma:

Es domāju, ka tas ir vērts izskaidrot mazliet par pēdējo kodu.
Par katru uz visiem braucieniem

36 Atbildes uz "Add izpildes laika notikumiem panta addHandler)"

  1. Informācija Bitacoras.com ...

    Līmenis Bitacoras.com: Es gribu, lai parādītu vairākas lietas ar šo piemēru? bet galvenais ir, kā pievienot notikumus grupai kontroles pie Runtime Visual Basic. net. Piemēram mums ir nepieciešama forma ar daudzām kontroles ....

  2. Jose Antonio saka:

    Paldies! Kods tīru, vienkāršu un funkcionālu. Tu esi parādība. Es kontroles bloki, kas VB6 par šīm lietām (piemēram, garām ...), bet ar to maz triks ir eleganti atrisināta.

  3. Eduardo Hernandez Saenz saka:

    Paldies par šo lielisko ieguldījumu, man ir izstrādātas VB6 jau 8 gadus un nav atrasts veids, kā darīt. Net, ko viņš pieļāvis VB6 ar Array kontroles, piemēram, rakstot par vienu notikumu visiem TexBox formas un identificēt katrs pa pie indeksa. Ar jūsu atbalstu Gan pārvarēja šo problēmu. PALDIES

  4. Fernando saka:

    Hello, ļoti labs izskaidrojums. AddHandler Es domāju kādu interesantu rīku, bet man ir jautājums par to. Es izmantot to ASP.NET un tas darbojas lieliski, es pievienot notikumus dinamiski saites žanru, bet darbojas tikai tad, ja addHandler atrodas slodzes. Vai ir kāds veids, ka tas darbojas ne atrašanos Load?
    Paldies par visu

  5. Jose saka:

    super laba šis kods ietaupa daudz līnijas, un laiku.

  6. Jose saka:

    Jūs varat darīt, kaut ko līdzīgu, bet, lai apstiprinātu taustiņa tikai ar numuriem utt, bet kaut kā identificēt katru textbox zināt, kas jāpiemēro formatējumu vai ka ir jābūt tikai skaitļi, teksts utt. Es ceru, ka man ir devuši savu punktu.

  7. Facundo teica:

    Sveiki, Man patīk jūsu vietni un apbrīnot jūsu centību šajā amatā. Es šobrīd studē universitātē un palīdz.

    Sveicieni!

  8. Shocksue saka:

    Sveiki labs kods, bet es esmu piesakās citu vadīklu un citu notikumu, un kad tas notiek, ka, ja es saku:
    AddHandler miObjeto.evento, AddressOf miRutina
    man saka, ka metode "mirutina" ir tāda pati paraksts kā delegāts.
    Jūsu piemērā jūs dont jūs atsūtīt parametrus delegātu un strādāt ar jums, kas varētu būt noticis ar mani?
    Paldies jau iepriekš par jūsu palīdzību ..

    • Elīsa saka:

      Tā ir taisnība, es sūtu parametrus, jo tie ir jāsūta kaut (tie tiek nosūtīti kontrolei, kas izraisīja šo notikumu), bet ir jādefinē procedūra zvanu. Piemēram: Private Sub MiRutina (ByVal sūtītājs Kā Object, ByVal e As System.EventArgs).

      Laime

  9. PreguntadorVB saka:

    Sveiki, šis ir labs piemērs lietošanas AddHandler un pievienot vadīklas veidlapā.

    Tāpēc es gribu palīdzēt savu artavu, pievienojot kodu, lai pievienotu notikumu kontrolei izveidotas runtime.

    Sveiciens.

    ----------------

    PulsadoDobleClick Private Sub (ByVal sūtītājs Kā Object, ByVal e As System.EventArgs)
    MsgBox ("Jūs nospiedāt Double Click")
    End Sub

    Private Sub Form1_Load (ByVal sender Kas System.Object, ByVal e As System.EventArgs) Rokturi MyBase.Load
    Kā New Tekstlodziņš Dim MiCajaDeTexto ()
    MiCajaDeTexto.Name = "CajaDeTexto"
    Me.Controls.Add (MiCajaDeTexto)
    AddHandler Me.Controls panta MiCajaDeTexto.Name). DoubleClick, AddressOf Me.PulsadoDobleClick
    End Sub

  10. Fernando saka:

    Paldies par jūsu palīdzību, es atnesu no nepatikšanām. Es nāku no VB6 un ir ļoti atšķirīgs, es izlasīju kaut kur, ka Microsoft plāno iekļaut jaunus bloki no kontroles to jaunas versijas NET, tāpat viņi rīkojās VB6. Kas atvieglos dzīvi tiem no mums, no vecās VB6.

  11. Alejandro Contreras saka:

    Lielisks, es tikai pievienot komentāru iespēja uzdot funkciju, kas ir parametrus.

  12. WILDEN saka:

    Lieliska gaita un lieliska palīdzība tiem, kas joprojām migrē no VB6 uz Net. Paldies
    "** Izmantojiet tikai lasāms īpašumu rediģēt textbox konkrētā GrupasRāmis **"

    Piemēram manā projektā:

    Private Sub Form1_Load (ByVal sender Kas System.Object, ByVal e As System.EventArgs) Rokturi MyBase.Load

    "Atrast textbox ar GrupasRāmis
    Katrai C, kā kontroles In Me.grpDatosPasajero.Controls

    Ja c.GetType Vai GetType (Tekstlodziņš) Tad

    AddHandler DirectCast (c, Tekstlodziņš). Enter, AddressOf conFoco
    AddHandler DirectCast (c, Tekstlodziņš). Atstājiet, AddressOf sinFoco

    Beigas Ja

    Nākamais

    End Sub

    "Kārtība
    ConFoco Private Sub (ByVal sūtītājs Kā Object, ByVal e As System.EventArgs)

    Ja nav DirectCast (sūtītājs, Tekstlodziņš). Tikai lasāms tam

    DirectCast (sūtītājs, Tekstlodziņš). BackColor = Color.PaleGoldenrod
    Beigas Ja

    End Sub

    SinFoco Private Sub (ByVal sūtītājs Kā Object, ByVal e As System.EventArgs)

    Ja nav DirectCast (sūtītājs, Tekstlodziņš). Tikai lasāms tam
    DirectCast (sūtītājs, Tekstlodziņš). BackColor = Color.White
    Beigas Ja

    End Sub

    wav

  13. Vb Mik saka:

    Exelentes kodi jejej draugi man ir uzņemt. garacias savlaicīgi. Sveicieni visiem

  14. Ale saka:

    Es piekrītu šo kodu relize ar palīdzību viņa piezīmes, tas palīdzētu man izveidot visas pogas jums ir nepieciešams, un nosūtīt uz funkciju ar nosacījumiem, kas pievienoti presēta pogu, gaisma no viena notikuma

    Valsts klases Form1
    Dim lbls () Kā Button
    Private Sub Form1_Load (ByVal sender Kas System.Object, ByVal e As System.EventArgs) Rokturi MyBase.Load
    Dim loc Kā Vesels skaitlis = 25
    Par M, kā Integer = 0 līdz 4
    ReDim Preserve lbls (m)
    lbls (m) = Jauna poga
    Ar lbls (m)
    . Teksts = ("Pogas" un m)
    . Vieta = jauns punkts (0, loc)
    . Izmērs () = Jauns System.Drawing.Size (75, 23)
    Beidzas ar
    lbls (m). Name = m
    Me.Controls.Add (lbls (m))
    AddHandler Me.Controls panta lbls (m). Nosaukums). Noklikšķiniet, AddressOf Me.Click
    loc + = 25
    Nākamais
    End Sub

    Private Sub Noklikšķiniet (ByVal sūtītājs Kā Object, ByVal e As System.EventArgs)
    Dim j Kā Button = sūtītājam
    MsgBox ("Jūs nospiedis pogu" & j.Name)
    End Sub
    Beigas klase

    Es ceru un būs daži

  15. Hulio Lopez saka:

    Es gribu izveidot TabPage un šajā runtime DataGridView, un q arī pievienot šo kontroli projektēšanas laikā, ja kāds zina, kā to izdarīt, es appreciate your help.

  16. Hulio Lopez saka:

    Es gribu izveidot TabPage un šajā DataGridView runtime, un arī pievienot šīs vadīklas ekrāna basic.net vizuālā noformējuma, ja kāds zina, kā to izdarīt, es appreciate your help.

  17. pepelepu saka:

    Holas! visi! kas notiek šeit ir tas, ka īpašums sniegt visu textbox ar:
    Katrai C, kā objekta Me.Controls
    bet, ja kiero dot izņēmumus atsevišķiem kontroles kā man darīt ... piemēram, ar pogu kiero aizpildīt manu formu ar dažiem piezīmju txtbox studentiem, bet ir citi txtbox piemēram, kods, nosauciet piezīmes pēc vidēji kiero utlizo
    Dim sum (n) Kā Double
    Dim c kā kontroles
    Katrai C Me.Controls
    Ja typeof c ir Tekstlodziņš Tad
    Summa (Val (c.Tag)) + = Val (c.Text)
    Beigas Ja
    Nākamais
    Katrai C Me.Controls
    Dim i kā Integer
    Ja typeof c ir etiķete tam
    Ja c.Tag> = 0 Pēc tam
    Ja Val (c.Tag) = i tam
    c.Text = Sum (i) / Val (txtnn.Text)
    i + = 1
    Beigas Ja
    Beigas Ja
    Beigas Ja
    bet es visu un vidējo txtbox iet greizi

  18. mekano saka:

    pepelepu, mēģiniet exluir šādi:

    ...
    Katrai C Me.Controls
    atlasīt gadījumu c.Name
    "Kontrolē, lai izslēgtu
    gadījums "nameControl1" "nameControl2" "nameControl3"
    cilpa
    cits gadījums
    "Es kontrolēt kontroli
    Summa (Val (c.Tag)) + = Val (c.Text)
    galu izvēlieties
    nākamais

  19. Motta JR saka:

    Sveicieni, ļoti interesanta kods.

    Man ir jautājums jums, man ir izstrādājusi MenuStrip kas rakstīts preces no datubāzes, ne ka es pat nevaru piešķirt apdarinātājs ir vai notikuma procedūru katram elementam MenuStrip kontroles vai ielādēšanas nosaukumus DB procedūrā labi, daži sugenrencia? Kā piemēru es izmantoju failu, var tikt atrasta subs url: http://www.dotnethelp.co.uk/es/vb/108413/menu_strip_vbnet~~HEAD=dobj
    Paldies par ieteikumiem

  20. Daniel saka:

    Man bija traks, jo nevar atlaist notikumus līdz starp šeit un izlasīt

    "Pēc formas Load gadījumā pievienot šādu kodu:"

    Es tikai trūkst to, dažreiz es pazust lietas skaidrs, paldies xD

  21. Edgars saka:

    Es tikko sāku ar notikumiem un apstrādes, un es domāju, ka tas ir sarežģīts (priekš manis), bet labi, ka cilvēki, kas veicina zināšanas, lai mums, kas principiamos ... paldies Elīsa un visi, kas ir iekļautas viņu mazliet.

    Sveicieni!

  22. Jēzus saka:

    Es esmu jauns, lai šo un man šķiet interesanti un ļoti labs jūsu piemērs, kā varētu iet sabiedrībai un varēs zvanīt no jebkuras formas ... paldies

  23. Romina saka:

    dzirdēt jautājumu nav, ja es varētu palīdzēt.
    Man ir jādara programmu, lai kontrolētu spēli ar kustību taustiņiem un es gribētu zināt, kā piešķirt atslēgas pogām, kas likts, no augšas uz leju, pa kreisi, pa labi un kad nospiežat pogu nospiestu darīt simulācija.

  24. Cēzars teica:

    Dārgais, vaicājumu, kā es varu nodot parametrus funkcijai, kuru norādīts addessOf, funkcija ir parametriem (IDBOTON), un katrai pogai ka es radītu es meklēt BD ar IDBOTON informāciju.

    Liels paldies par jūsu palīdzību.

  25. poncianux saka:

    Es uzzināju šo ne tik sen (1 diena) lol, bet tas šķiet sarežģīti ir ļoti viegli, pat izsauktu funkciju klāstu no A SQLCE sveicieniem!

  26. Luis saka:

    Hello, ļoti interesanti, es vēlos viņiem varētu man pastāstīt, kā piemērot šo kodu, lai pievienotu notikumus runtime in C #.
    Paldies, arī ir pievienot Click notikumu par picturebox es izveidota runtime.
    Paldies

  27. Havjers saka:

    Ļoti vienkāršs, bet ļoti praktisks. Ļoti pateicos

  28. Haider saka:

    Sveiki, lielisks. Man ir jautājums, šis kods strādā par pārbaudēm, kas ir tieši laiž formu. Bet lai tā darbotos konteineriem bez iemetot veidlapas Load kodu par katru konteineru?

    • Elīsa saka:

      Jūs varat izveidot rekursīvo funkciju, kas pārbauda, ​​ja kontrole sauc atkal.
      Tad es varu atstāt jums piemēru un es vēlos paskaidrot, ka man nav testēti laika trūkuma dēļ, bet gribēju tev atbildēt, jo es atstāju jūs šeit.
      Izmantot to kā pamatu savu funkciju. Veiksmi.

      Private Sub Form1_Load (ByVal sūtītājs Kā Object, ByVal e As System.EventArgs) Rokturi Me.Load
      recorrerContenedores (es)
      End Sub

      Sub recorrerContenedores (ByVal c Kā Control)
      Ja c.Controls.Count> 0 Tad
      recorrerContenedores (c)
      Cits
      'Pievienot rokturi
      Beigas Ja
      End Sub

  29. Hibers saka:

    Hello Dear, es gribēju zināt, ja es garām daļu dokumentu, jo galu galā, kamēr es lasīju, šķiet, jūs gatavojas izskaidrot mazliet kodu un ir kaut kas līdzīgs šim:

    Es domāju, ka tas ir vērts izskaidrot mazliet par pēdējo kodu.
    Par katru uz visiem braucieniem ...

    Missing something? jūs varētu pabeigt to, ja tā? Paldies un apsveikt jūs par ieguldījumu jūs veicat, lai kopienas VB

  30. Juan Carlos saka:

    sveiki estubo buenaso ka, bet man ir problēma, ja tu saproti, jūsu projekts darbojas, lai ielādētu formu .... Nu mana problēma ir Es nevēlos, lai man kiero ka nospiežot manu add pogu nesen viņa sāk darboties kā zaudēja un ieguva uzmanību ar katru textbox .. man palīdzēt šajā malks porfa reponde Jo ātrāk paldies ...
    saludosss ....

    • Elīsa saka:

      Ne vienmēr addHandler jābūt slodzes ... varat likt to, kur jūs vēlaties. Bez tam jūs varat izmantot (ja nepieciešams) ar RemoveHandler paziņojumu par asociācijas notikuma kontroles.

  31. Mario saka:

    Wooow! Šis piemērs man ir neatsverama palīdzība, es pateicos jums, tiešām. Bet protams es nevaru ^ ^ Greetings!

Komentēt