property,get,set 语句祥解

property


   get

   End Get

   Set

   End Set

End property
 
property....End property里面设置属性

get...End Get是读取属性值,比如读取textbox.text
set...End set是设置属性值,比如设置textbox.readonly=true



因是因為, 這是兩個不同的Form1類別執行個體.




比方說你把程式改為這樣



Public Class Class1

Public Shared Sub ThreadProcSafe()

Form1.SetText("This text was set safely.")

Form1.ShowDialog()

End Sub

End Class



你就會發現預期的效果其實是出現在另外一個Form1. 而非原本的Form1



如果你要正確的結果, 就必須將原來的Form1執行個體傳遞給這個靜態方法:



ex:



Public Class Form1

Delegate Sub SetTextCallback(ByVal [text] As String)



Public demoThread As Thread = Nothing



Public Sub SetText(ByVal [text] As String)



If Me.TextBox1.InvokeRequired Then

Dim d As New SetTextCallback(AddressOf SetText)

Me.Invoke(d, New Object() {[text]})

Else

Me.TextBox1.Text = [text]

End If

End Sub

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

Class1._mainForm = Me

Me.demoThread = New Thread(New ThreadStart(AddressOf Class1.ThreadProcSafe))

Me.demoThread.Start()

End Sub



End Class



Public Class Class1

Private Shared m_mainForm As Form1



Public Shared Property _mainForm As Form1

Get

Return m_mainForm

End Get

Set(ByVal value As Form1)

m_mainForm = value

End Set

End Property

Public Shared Sub ThreadProcSafe()

_mainForm.SetText("This text was set safely.")

End Sub

End Class