我有一个名为MyForm
的表格,该表格是从Windows.Forms.Form
继承的。在此表单上,我有一个名为TextBox
的{{1}}。现在,当我在_msgBox
上设置Text
属性时,我实际上想设置MyForm
的{{1}}属性。我写了一个简单的属性来做到这一点:
_msgBox
但是,这没有用。因此,我使用了Google-fu,并能够找到this forum post,这时我将代码更改为:
Text
这仍然不能解决问题,因此我在SO上进行了检查,发现this question,这表明我也需要设置基本属性。我这样做了,我的代码现在看起来像这样:
Public Overloads Property Text As String
Get
Return _msgBox.Text
End Get
Set(value As String)
_msgBox.Text = value
End Set
End Property
但是我仍然没有看到这个属性被设置。当我调用<Browsable(True)>
<EditorBrowsable(EditorBrowsableState.Always)>
<Bindable(True)>
<DesignerSerializationVisibility(DesignerSerializationVisibility.Visible)>
Public Overloads Property Text As String
Get
Return _msgBox.Text
End Get
Set(value As String)
_msgBox.Text = value
End Set
End Property
时,基本的<Browsable(True)>
<EditorBrowsable(EditorBrowsableState.Always)>
<Bindable(True)>
<DesignerSerializationVisibility(DesignerSerializationVisibility.Visible)>
Public Overloads Property Text As String
Get
Return _msgBox.Text
End Get
Set(value As String)
MyBase.Text = value
_msgBox.Text = value
End Set
End Property
属性已设置,但我的内部属性仍未设置。我该如何解决这个问题?
答案 0 :(得分:2)
我刚刚进行了一些测试,并且有效:
Public Overrides Property Text As String
Get
Return If(TextBox1 Is Nothing, MyBase.Text, TextBox1.Text)
End Get
Set
MyBase.Text = Value
TextBox1.Text = Value
End Set
End Property
请注意,在吸气剂中,它将进行测试以查看TextBox
是否存在,并仅在存在时使用它,否则使用表格。我从这里开始:
Return TextBox1.Text
我得到一个NullReferenceException
的提示,大概是因为在创建Text
之前使用了TextBox
属性值。
答案 1 :(得分:1)
这比您尝试的要简单得多。只需通过Form的TextChanged事件更改TextBox的文本:
Public Class Form1
Private Sub Form1_TextChanged(sender As Object, e As EventArgs) Handles Me.TextChanged
TextBox1.Text = Me.Text
End Sub
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles Me.Load
Me.Text = "My New Text"
End Sub
End Class
在窗体上尝试此操作,当窗体加载时,文本框将具有与窗体相同的文本。