2014-11-04 61 views
1

在Visual Basic中進行編碼時,我可以將變量的觸發器定義爲:無論何時變量的值發生變化,都會觸發一個函數,從而改變另一個變量的值。我想知道是否有辦法在C#中做同樣的事情。也就是說,我想爲變量定義一個觸發器,每當該變量的值被更改時觸發。如何將觸發器分配給C#中的變量?

下面的代碼是我如何在VB中做到這一點。當運行這個應用程序,每當一個新的用戶登錄,該應用程序分配用戶名如ActiveUserName = "SomeUserName",這反過來自動更新表格中的FormMain.StatusLabelUserName.Text。那麼,有沒有辦法在C#中實現這個觸發器?

Public Property ActiveUserName() As String 
    Get 
     ActiveUserName = FormMain.StatusLabelUserName.Text 
    End Get 
    Set(ByVal Value As String) 
     FormMain.StatusLabelUserName.Text = Value 
    End Set 
End Property 

回答

2

我相信你正在尋找Properties

private int localMember; 
public int publicProperty 
{ 
    get 
    { 
    return localMember; 
    } 
    set 
    { 
    localMember = value; 
    //Do whatever you want here. 
    } 
} 

「獲取」塊運行你訪問該值的任何時間。無論何時分配一個值,「set」塊都會運行。

+0

只是一個快速補充; OP想要的功能可以通過在setter中進行提升和事件來完成;框架使用綁定註冊(當然只有WPF)。 – BradleyDotNET 2014-11-04 23:06:40

+1

順便提一句,'value'是在集合塊中使用的特殊關鍵字。它包含分配的值。 – MikeH 2014-11-04 23:10:48

1

這是通過舉辦活動來處理的。這post描述如何做得很好。

1

這是一個簡單的property。下面是C#語法:

public string ActiveUserName 
{ 
    get { return FormMain.StatusLabelUserName.Text; } 
    set { FormMain.StatusLabelUserName.Text = value; } 
} 
1

屬性可以工作同在C#

public string ActiveUserName 
{ 
    get{ return FormMain.StatusLabelUserName.Text;} 
    set{FormMain.StatusLabelUserName.Text = value; /*do more stuff here; */} 
} 

這可以得到相當混亂和有些僵硬但是。你可以考慮使用事件來完成同樣的事情。

-1

屬性和設置的括號。 012otINotifyPropertyChanged可以實現WPF數據綁定爲例。

0

使用INotifyPropertyChanged事件。

相關問題