我拿了一个div id =" DivErr" RUNAT ="服务器"
这是我的网页写在
中的一个类Public Class ReceiptInv Inherits System.Web.UI.Page
Partial Class MyTimer
Private Sub New()
End Sub
Public Shared timer As New Timer(5000)
' Enable the timer to run
Public Shared Sub StartRuning()
AddHandler timer.Elapsed, AddressOf timer_Elapsed
timer.Start()
End Sub
' This method will be called every 5 seconds
Private Shared Sub timer_Elapsed(ByVal sender As Object, ByVal e As ElapsedEventArgs)
Dim TMR As New ReceiptInv
TMR.DivErr.Visible = False
End Sub
End Class
End Class
我想让这个DivErr每5秒钟显示为假。 但错误符合 TMR.DivErr.Visible = False
NullReferenceException Unhandled By Usercode
Object reference not set to an instance of an Object
谁能说出我做错了什么?在此先感谢..
答案 0 :(得分:1)
您需要获取页面的真实实例,然后才能访问它的控件和属性。由于您的方法为Shared
,因此无法访问当前页面实例的控件(轻松)。
但您可以尝试通过HttpContext.CurrentHandler获取页面实例。
Private Shared Sub timer_Elapsed(ByVal sender As Object, ByVal e As ElapsedEventArgs)
Dim page = TryCast(HttpContext.CurrentHandler, ReceiptInv)
If page IsNot Nothing Then
page.DivErr.Visible = False
End If
End Sub
但是,为什么需要共享该方法呢?所有请求都共享一个Shared
计时器!
除此之外,我怀疑你每隔5秒就试图使控件可见/不可见。由于您正在使用服务器计时器,因此不会以这种方式工作。您可以改为使用ASP.NET-Ajax-Timer
:http://msdn.microsoft.com/en-us/library/bb386404(v=vs.100).aspx