我如何将计时器对象传递给函数?

问题描述 投票:0回答:1

我在vb中的项目的每个Windows窗体上都有一个计时器。网名为“定时器”,它的工作原理我有一个使用计时器的成功代码,但我认为最好避免每种形式的计时器事件(刻度)中的所有例程和重复代码

如何将计时器属性传递给模块中的函数这是我用我的表格编写的基本代码

Private Sub timer1_tick (ByVal Sender As Object , ByVal e As EventArgs) Handles Timer1. Tick

    Static Second As Integer
    Second +=1

    If second >= 4      Then
          Timer1. Stop( ) 
           Lbl_Save. Visible  =  False
           Second = 1
    End If

End sub


Private Sub btn_Save_Click(ByVal Sender As Object , ByVal e As EventArgs) Handles btn_Save. Click

   Timer1. Interval = 300

    Timer1. Start ( ) 

End Sub

============================

我在(Setting_Module)有缺陷的错误中编写的过程

Public Sub Get_Timer (ByRef form_Name As Form ) 

    Static Second As Integer
    Second +=1

    If second >= 4      Then

          formName.        Controls("Timer1").Stop( ) Error

        formName.Controls(" Lbl_Save"). Visible  =  False

           Second = 1
    End If

End Sub

编译器给我一个错误,因为它不能接受(属性:停止)

任何人都有一个更好的主意,我将非常感谢他

vb.net vb.net-2010
1个回答
0
投票

您应该使用Microsoft的Reactive Framework(aka Rx)-NuGet System.Reactive.Windows.Forms并添加using System.Reactive.Linq;-然后您可以执行此操作:

Private Sub btn_Save_Click(ByVal Sender As Object, ByVal e As EventArgs) Handles btn_Save.Click

    Lbl_Save.Visible = True

    Observable _
        .Timer(TimeSpan.FromSeconds(4.0)) _
        .ObserveOn(Me) _
        .Subscribe( _
            Sub(x)
                Lbl_Save.Visible = False
            End Sub)
End Sub

然后,您根本就不用在乎计时器了。

© www.soinside.com 2019 - 2024. All rights reserved.