我想在每次My.Settings更改值時呼叫一個方法。就像是:
Private Sub myValue_Changed(sender As Object, e As EventArgs) Handles myValue.Changed
(...)
End Sub
我知道,如果我想用一個變數來做,我必須把它變成一個類并在上面設定事件。但我不能用My.Settings.
有沒有辦法做到這一點?
uj5u.com熱心網友回復:
正如另一個答案的評論中所建議的那樣,您可以通過Binding. 或者,你可以基本上做Binding課堂自己做的事情,因為它并沒有那么多,例如
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
Dim settingsPropertyDescriptors = TypeDescriptor.GetProperties(My.Settings)
Dim setting1PropertyDescriptor = settingsPropertyDescriptors(NameOf(My.Settings.Setting1))
setting1PropertyDescriptor.AddValueChanged(My.Settings, AddressOf Settings_Setting1Changed)
End Sub
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
My.Settings.Setting1 = "Hello World"
End Sub
Private Sub Settings_Setting1Changed(sender As Object, e As EventArgs)
Debug.WriteLine($"{NameOf(My.Settings.Setting1)} changed to ""{My.Settings.Setting1}""")
End Sub
PropertyDescriptor與類一樣,此代碼通過 a 向屬性添加更改的處理程式Binding。
uj5u.com熱心網友回復:
一句話:沒有。My.Settings不支持它自己。
您可以做的是創建自己的包裝類My.Settings。只要您使用這個新課程,并且不再My.Settings直接去,那么您可以在該課程上放置一個事件,它將滿足您的需求。
但是,即使在這里,也無法強制使用新類,并阻止直接訪問My.Settings.
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/463822.html
