événement très simple j'ai un objet Order
avec un événement simple,ASP.NET: manipulation ne fonctionne pas
Public Event ErrorOccurred(ByVal msg As String)
que je soulève dans le constructeur comme alors quand un ordre ne peut pas être trouvé (le long w/la fixation d'un booléen indicateur d'erreur:
RaiseEvent ErrorOccurred("This order does not exist in the database.")
[Error] = True
J'ai un formulaire en ligne souscrit à l'événement ErrorOccurred
de l'ordre:
Public WithEvents o As New Order
et I ont une méthode de gestionnaire d'erreur sur la forme:
Private Sub OnErrorOccurred(ByVal msg As String) Handles o.ErrorOccurred
litMsg.Text = "<p class=""error-confirm"">" & msg & "</p>"
End Sub
Quand une zone de texte est modifié, il autoposts retour à la page et utilise la logique suivante:
Private Sub txtOrderID_TextChanged(ByVal sender As Object,_
ByVal e As System.EventArgs) Handles txtOrderID.TextChanged
If IsNumeric(txtOrderID.Text) Then
If o.OrderID = 0 Then o = New Order(txtOrderID.Text)
If Not o.Error Then
'do stuff'
Else
'error, run error handling'
End If
....
Lorsqu'il y a une erreur (lorsque la logique Else
est exécutée), tout se déroule normalement, sauf que l'événement ne se déclenche pas. Cependant, puisque l'indicateur Error
est défini sur true, cela signifie que l'événement DOIT avoir été déclenché, car cette ligne s'exécute APRÈS la ligne RaiseEvent
.
J'ai essayé tout ce que je peux penser, mais je ne peux pas comprendre ce qui pourrait être faux. J'ai des événements éparpillés partout dans mon projet et ils fonctionnent tous bien en utilisant pratiquement la même structure. Que pourrais-je faire mal ici?
est-ce que dire que vous ne pouvez pas vraiment déclencher des événements dans le constructeur? – Jason
merci ... c'était vraiment utile – Jason
C'est exact, au moins la façon dont vous l'avez codé. La seule façon de l'obtenir pour gérer un événement du constructeur est de passer une référence à l'appelant, de l'appelé, et d'ajouter l'explicitation du gestionnaire d'événements, avant que l'événement ne soit lancé. – Kibbee