[VB.NET] Detecteren of event een handler heeft

Pagina: 1
Acties:

  • Rhapsody
  • Registratie: Oktober 2002
  • Laatst online: 11:50

Rhapsody

In Metal We Trust

Topicstarter
Goedemorgen!!

Ik probeer uit te vinden hoe je kan detecteren of een event een eventhandler heeft.
in C# is dit mogelijk maar ik kom er maar niet uit hoe ik dit in VB.NET op moet lossen.

Is C# werkt het alsvolgt:
C#:
1
2
3
4
5
6
7
public event RibbonPopupEventHandler OnPopup;
...
...
if (OnPopup != null)
{
   e.Graphics.DrawString("+", this.Font, new SolidBrush(Color.FromArgb(21, 66, 139)), rect3, sf);
}


Kan iemand mij even een schopje in de goede richting geven? Op internet kan ik verder niets vinden, maar ik moet eerlijk zeggen dat ik ook niet goed weet welke termen ik moet gebruiken.

Alvast bedankt voor de hulp

[ Voor 5% gewijzigd door Rhapsody op 08-02-2007 10:14 . Reden: per ongeluk VB.NET code ipv C# gepost ]

🇪🇺 pro Europa! | Puinhoop Veroorzaken en Vertrekken (PVV)


  • whoami
  • Registratie: December 2000
  • Laatst online: 00:54
Die code die je daar post, is helemaal geen C# ....

Je moet gewoon checken of de event niet null is.
C#:
1
2
3
if( theEvent != null )
{
}

[ Voor 50% gewijzigd door whoami op 08-02-2007 09:41 ]

https://fgheysels.github.io/


  • Rhapsody
  • Registratie: Oktober 2002
  • Laatst online: 11:50

Rhapsody

In Metal We Trust

Topicstarter
whoami schreef op donderdag 08 februari 2007 @ 09:40:
Die code die je daar post, is helemaal geen C# ....

Je moet gewoon checken of de event niet null is.
C#:
1
2
3
if( theEvent != null )
{
}
Ow shit ja, mijn excuses. Ik had mijn eigen probeersel er staan, nu heb ik de juiste code weer neergezet.

in C# weet ik dus dat het op die manier moet, maar in VB.NET krijg ik dat niet voor elkaar.

🇪🇺 pro Europa! | Puinhoop Veroorzaken en Vertrekken (PVV)


  • TeeDee
  • Registratie: Februari 2001
  • Laatst online: 10:26

TeeDee

CQB 241

Wil je niet gewoon
Visual Basic .NET:
1
2
if not theEvent is Nothing then
...

Iets in die trant. Een Nothing == null in vb.net.

Heart..pumps blood.Has nothing to do with emotion! Bored


  • Rhapsody
  • Registratie: Oktober 2002
  • Laatst online: 11:50

Rhapsody

In Metal We Trust

Topicstarter
TeeDee schreef op donderdag 08 februari 2007 @ 10:34:
Wil je niet gewoon
Visual Basic .NET:
1
2
if not theEvent is Nothing then
...

Iets in die trant. Een Nothing == null in vb.net.
Dat heb ik geprobeerd maar dan stuit ik op deze error:
code:
1
Error   78  'Public Event OnPopup(sender As Object)' is an event, and cannot be called directly. Use a 'RaiseEvent' statement to raise an event.

🇪🇺 pro Europa! | Puinhoop Veroorzaken en Vertrekken (PVV)


  • whoami
  • Registratie: December 2000
  • Laatst online: 00:54
Die event is dus in een class gedefinieerd, en jij wilt in een subclass gaan checken of er iets aan hangt. Dat gaat idd niet op die manier, aangezien het event keyword ervoor zorgt dat je enkel binnen de class waar die event gedefinieerd is, die event op die manier kunt aanspreken.
Echter, als dit het geval is, zal er in die base-class wel een protected method gedefinieerd zijn, waarmee je de event op een veilige manier kunt invoken. (En als het goed is, is die protected method ook virtual, dus kan je ze overriden).

https://fgheysels.github.io/


  • TeeDee
  • Registratie: Februari 2001
  • Laatst online: 10:26

TeeDee

CQB 241

Vreemd, dit zou afaik gewoon moeten werken.
Visual Basic .NET:
1
2
3
4
If Not OnPopUp Is Nothing Then
...
End If
RaiseEvent OnPopUp(args)

Zoiets...

Edit: en de reden is wat whoami zegt.

[ Voor 13% gewijzigd door TeeDee op 08-02-2007 10:46 ]

Heart..pumps blood.Has nothing to do with emotion! Bored


  • Rhapsody
  • Registratie: Oktober 2002
  • Laatst online: 11:50

Rhapsody

In Metal We Trust

Topicstarter
ik ga even kijken hoe ik dit het beste op kan lossen. Bedankt!

🇪🇺 pro Europa! | Puinhoop Veroorzaken en Vertrekken (PVV)


  • BertS
  • Registratie: September 2004
  • Laatst online: 27-10 13:12

  • Serpie
  • Registratie: Maart 2005
  • Laatst online: 01-07-2023
TeeDee schreef op donderdag 08 februari 2007 @ 10:43:
Vreemd, dit zou afaik gewoon moeten werken.
Visual Basic .NET:
1
2
3
4
If Not OnPopUp Is Nothing Then
...
End If
RaiseEvent OnPopUp(args)

Zoiets...

Edit: en de reden is wat whoami zegt.
Nee dat moet in vb.net OnPopupEvent zijn, deze delegate wordt automatisch aangemaakt door .net maar is niet zichtbaar in de intellisense. (in Vb.net :()

Dus declareer je een event als :
code:
1
Public Event OnTest as EventHandler


dan kun je met de volgende code de controle uitvoeren.
code:
1
If Not OnTestEvent is Nothing Then
Pagina: 1