2017-02-23 12 views
0

私はG_USERが、その後変更されたときにどのように私は、グローバルイベントを作成することができ、ユーザ名を表示する文字列やラベルlb_welcomeなどのグローバル変数G_USERを持っているが、機能にグローバルイベントの作成方法は?

Private Sub Login() 
    g_user = VerifyUser(id,password) 
    lb_welcome.Text = $"Welcome {g_user}" 
End Sub 

がトリガされます私はこのような何かをしよう -

上記
Private Sub RefreshLabel() 
     lb_welcome.Text = $"Welcome {g_user}" 
    End Sub 

    Private Sub g_user_Changed(sender As Object, e As EventArgs) Handles g_user.Changed 
     RefreshLabel() 
    End Sub 

一例であり、lb_welcome.Textは、多くのグローバル変数が含まれている、私は常に変数が変更されたとき、手動で機能を追加する必要があり、それは私が自動的に関数を実行を支援するグローバルイベントを作成することは可能でしょうか?

Public Module MyModule  
    Public Event Changed As EventHandler(Of ChangedEventArgs) 

    Private _user As String 
    Public Property g_user As String 
     Get 
      Return _user 
     End Get 
     Set(value As String) 
      _user = value 
      raisePropertyChanged("g_user", value) 
     End Set 
    End Property 

    Private Sub raisePropertyChanged(propertyName As String, value As String) 
     RaiseEvent Changed(Nothing, New ChangedEventArgs() With {.PropertyName = propertyName, .Value = value}) 
    End Sub 
End Module 

のEventArgsはかなりまっすぐ進むです:

Public Class ChangedEventArgs 
    Inherits EventArgs 

    Public PropertyName As String 
    Public Value As String 
End Class 

あなたはあなたの特性の一つ(ここではG_USER)が変更された場合に発生されるモジュールでのパブリックイベントを定義する必要が

+0

VB .NETには*グローバル変数はありません。あなたのタグが正しいと確信していますか? VB 6を使用していますか? –

+0

@AlexB。 public g_user As Stringこれはモジュール内にあり、この変数はすべての形式で使用できるので、これはグローバル変数だと思いますか? VB6ではなくVB.NETを使用しています。 – vbnewbie

+0

モジュール内の公開変数はグローバルなものです...マイクロソフトが提供している汚れたハックを忘れていました... –

答えて

1

あなたのフォームでイベントをフックしてそれに反応してください:

Public Class Form1 

    Public Sub New() 

     ' This call is required by the designer. 
     InitializeComponent() 

     ' Add any initialization after the InitializeComponent() call. 
     AddHandler MyModule.Changed, AddressOf RefreshLabel 

    End Sub 

    Private Sub RefreshLabel(s As Object, e As ChangedEventArgs) 
     If e.PropertyName = "g_user" Then 
      lb_welcome.Text = $"Welcome {e.Value}" 
     Else 
      '... 
     End If 
    End Sub 
End Class 
+0

ありがとうございます!!! – vbnewbie

+0

嬉しいことに:) –

関連する問題