2014-09-02 51 views
1

因此,我在winforms上有一個包含文本框的用戶控件。我有一個窗體,其中有一個與usercontrol所在窗體不同的按鈕。當我點擊另一個表單中的按鈕時,如何更改usercontrol的textbox.text數據?我正在使用VB.NET。通過表單更改用戶控件的Textbox.Text值

如果兩者都是形式,我可以代碼是這樣的,因爲對VB.NET下WinForms控件訪問標識符button_click事件下是朋友...

Form1.Textbox1.Text = "Hello" 

然而,這沒有按」在用戶控件上工作。我該如何做這樣的事情?非常感謝你。

回答

0

你可以在你的usercontrol中定義一個Text屬性,它最初處理你的textbox.text屬性。

Public Class MyUserControl 

    [DesignerSerializationVisibility(DesignerSerializationVisibility.Visible)] _ 
    [Browsable(True)] _ 
    Public Shadow Property Text As String 
     Get 
      Return textBox1.Text 
     End Get 
     Set(Value As String) 
      textBox1.Text = Value 
     End Set 
    End Property 

End Class 

現在你可以設置文字這樣

MyUserControl1.Text = "This is My Text" 

而且以這樣的形式在用戶控件已經把

Public Class Form1 

    Public Property UserControlText As String 
     Get 
      Return MyUserControl1.Text 
     End Get 
     Set(Value As String) 
      MyUserControl1.Text = Value 
     End Set 
    End Property 
End Class 

創建另一個屬性,您還可以從另一種形式的訪問控制使用此代碼

Form1 frmForm = DirectCast(Application.OpenForms("Form1"), Form1) 
If frmForm IsNot Nothing Then 
    frmForm.UserControlText = "Value from different form" 
End If 
+0

Hi @Shell,謝謝你的回覆。經過一些小的調整,我得到了它的工作,非常感謝你。此行... [DesignerSerializationVisibility(DesignerSerializationVisibility.Visible)] _ [Browsable(True)] _不起作用。 – 2014-09-02 05:23:55

+0

這些是在設計時顯示屬性的屬性,在設計時指定的屬性在項目構建時不會丟失。順便說一句,你得到什麼問題? – Shell 2014-09-02 05:40:54

+0

代碼窗口顯示藍色曲折線條的代碼,這意味着intellisense無法檢測到任何類似的內容。我是否錯過了要包含的任何庫? – 2014-09-02 07:24:20