如何访问类中的网页控件

时间:2014-05-19 07:24:58

标签: asp.net vb.net

我拿了一个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

谁能说出我做错了什么?在此先感谢..

1 个答案:

答案 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-Timerhttp://msdn.microsoft.com/en-us/library/bb386404(v=vs.100).aspx