2014-09-02 50 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