【发布时间】:2009-09-13 18:13:01
【问题描述】:
我有一个对象Order 有一个简单的事件,
Public Event ErrorOccurred(ByVal msg As String)
当找不到订单时,我在构造函数中提出这样的问题(以及设置布尔错误标志:
RaiseEvent ErrorOccurred("This order does not exist in the database.")
[Error] = True
我有一个订阅订单的ErrorOccurred 事件的网络表单:
Public WithEvents o As New Order
我在表单上有一个错误处理方法:
Private Sub OnErrorOccurred(ByVal msg As String) Handles o.ErrorOccurred
litMsg.Text = "<p class=""error-confirm"">" & msg & "</p>"
End Sub
当一个文本框被改变时,它会自动返回页面并采用以下逻辑:
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
....
当出现错误时(当Else 逻辑运行时),除了事件没有触发之外,一切都按预期执行。但是,由于Error 标志设置为true,这意味着事件必须已经触发,因为该行在RaiseEvent 行之后执行。
我已经尝试了所有我能想到的方法,但我无法弄清楚可能出了什么问题。我的项目中到处都有事件,它们都使用几乎相同的结构运行良好。我在这里做错了什么?
【问题讨论】: