簡體   English   中英

如何將計時器 object 傳遞給 function?

[英]How can i pass a timer object to a function?

我在 vb 中的項目的每個 Windows 形式上都有一個計時器。 網絡命名為“定時器”,它的工作屬性我有一個使用定時器的成功代碼,但我認為最好避免在每個表單的定時器事件(Tick)中的所有例程和重復代碼

如何將計時器屬性傳遞給我的模塊中的 Function 這是我用我的表單編寫的基本代碼

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

編譯器給我一個錯誤因為它不能接受(屬性:停止)

任何人有更好的主意,我會非常感謝他

You should use Microsoft's Reactive Framework (aka Rx) - NuGet System.Reactive.Windows.Forms and add 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

那么你根本就不會在玩定時器。

Position 有問題,我的 vb 的所有控件的字體大小和大小。 網絡形式在程序的編譯和運行時,我發現每個控件都超出並占用了更多空間,並且一些控件隱藏在其他控件后面。並且。 其他人從我設計的實際 Position 中移開所有這一切都是在打開表單的代碼行之前看到以下代碼行之后發生的

私人子 btn_Click ( ) Frm。 Mdi parent = me Frm.Show ( ) Frm.Show ( ) End Sub

我嘗試手動更改“Anchor”屬性和“Dock”屬性的值,但不幸的是我得到了相同的結果。我必須通過代碼手動重置每個控件的格式(字體-大小-位置)。 . 雖然結果令人滿意,但我為達到我的目標付出了很多(耗時).. 任何想法或更簡單的解決方案我都會感謝他

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM