[VB.NET]Dynamisch code toevoegen aan bestaande event handler

Pagina: 1
Acties:

Onderwerpen


Anoniem: 294343

Topicstarter
Na uren zoeken en proberen heb ik eindelijk een oplossing gevonden op mijn probleem, maar de oplossing die ik uiteindelijk gevonden heb is in C# en ik slaag er maar niet in om de juiste syntax te vinden voor VB.NET
Het gaat over dit stukje code in C#:
code:
1
2
3
4
5
6
7
8
9
10
int flyoutOffset = 0;
Windows.UI.ViewManagement.InputPane.GetForCurrentView().Showing += (s, args) =>
    {
        flyoutOffset = (int)args.OccludedRect.Height;
        flyout.VerticalOffset -= flyoutOffset;
    };
Windows.UI.ViewManagement.InputPane.GetForCurrentView().Hiding += (s, args) =>
    {
        flyout.VerticalOffset += flyoutOffset;
    };

uit deze blog die een oplossing biedt: http://blogs.msdn.com/b/e...the-virtual-keyboard.aspx

De 'Showing' en 'Hiding' zijn 2 bestaande events in een klasse uit .NET.
Aan dit event worden dus nog enkele code lijnen toegevoegd. Hoe zijn deze regels nu in VB.NET?

[ Voor 7% gewijzigd door Anoniem: 294343 op 20-09-2012 19:46 ]


  • sig69
  • Registratie: Mei 2002
  • Laatst online: 01:24
Dit zijn gewoon events met event handlers? (Er worden dus geen regels code aan een functie toegevoegd, zoals jij zegt) Waarom "kan je daar niet bij" in VB.Net?

[ Voor 31% gewijzigd door sig69 op 20-09-2012 19:12 ]

Roomba E5 te koop


Anoniem: 294343

Topicstarter
Dit zijn gewoon events met event handlers? (Er worden dus geen regels code aan een functie toegevoegd, zoals jij zegt) Waarom "kan je daar niet bij" in VB.Net?
Er staat een +=, dus dit vertaald hem dan gewoon in een nieuwe event handler toevoegen aan het event?

code:
1
2
3
4
5
Windows.UI.ViewManagement.InputPane.GetForCurrentView().Showing += (s, args) =>
    {
        flyoutOffset = (int)args.OccludedRect.Height;
        flyout.VerticalOffset -= flyoutOffset;
    };


Deze ene regel moet ik in 1 regel VB.NET code hebben

[ Voor 47% gewijzigd door Anoniem: 294343 op 20-09-2012 19:48 ]


  • sig69
  • Registratie: Mei 2002
  • Laatst online: 01:24
Dit is niets anders dan een normale event handler, alleen dan in lambda-vorm gegoten. In VB.Net is het iets van ÄddHandler"ofzo geloof ik

Roomba E5 te koop


Anoniem: 294343

Topicstarter
Oh, ik zat het dus veel te ver te zoeken met andere worden |:(
Ik wou persé die lambda vorm in VB.NET hebben ook, omdat ik dacht dat de += notatie een andere betekenis had...

Dan komt dit dus gewoon neer op
code:
1
AddHandler Windows.UI.ViewManagement.InputPane.GetForCurrentView().Showing, AddressOf virtualKeyboard_Showing


Thanks, het mysterie is opgelost!

[ Voor 4% gewijzigd door Anoniem: 294343 op 20-09-2012 19:54 ]


Acties:
  • 0 Henk 'm!

  • Woy
  • Registratie: April 2000
  • Niet online

Woy

Moderator Devschuur®
Ik neem aan dat je in VB.NET ook gewoon met lambda functies als event handlers kunt werken.

“Build a man a fire, and he'll be warm for a day. Set a man on fire, and he'll be warm for the rest of his life.”


Acties:
  • 0 Henk 'm!

  • TallManNL
  • Registratie: Oktober 2005
  • Laatst online: 11-07 10:35
In VB kun je ook gewoon de volgende code uitvoeren.

Visual Basic:
1
2
3
4
'Testcode binnen een form
AddHandler Me.Load, Sub(o As Object, e As EventArgs)
                      MsgBox("OK")
                    End Sub


Om deze te kunnen verwijderen zul je de functie aan een variabele moeten assignen en die in AddHandler/RemoveHandler gebruiken. MSDN link

[ Voor 39% gewijzigd door TallManNL op 21-09-2012 08:37 ]

geheelonthouder met geheugenverlies

Pagina: 1