Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vb.net 设置数据绑定文本框控件';的边框样式将覆盖新的文本值_Vb.net_Winforms_Data Binding_Textbox_Border - Fatal编程技术网

Vb.net 设置数据绑定文本框控件';的边框样式将覆盖新的文本值

Vb.net 设置数据绑定文本框控件';的边框样式将覆盖新的文本值,vb.net,winforms,data-binding,textbox,border,Vb.net,Winforms,Data Binding,Textbox,Border,我发现并能够在Windows窗体中重现一种特殊的行为,即更新数据绑定文本框中的文本,然后更改边框样式将覆盖新的文本值 复制:创建新表单,添加三个TextBox控件,并使用以下代码: Public Class Form1 Private Class SampleObject Public Property MyText As String = String.Empty End Class Private _sampleObject1 As New Sam

我发现并能够在Windows窗体中重现一种特殊的行为,即更新数据绑定文本框中的文本,然后更改边框样式将覆盖新的文本值

复制:创建新表单,添加三个TextBox控件,并使用以下代码:

Public Class Form1

    Private Class SampleObject
        Public Property MyText As String = String.Empty
    End Class

    Private _sampleObject1 As New SampleObject With {.MyText = "Old Text 1"}
    Private _sampleObject2 As New SampleObject With {.MyText = "Old Text 2"}
    Private _sampleObject3 As New SampleObject With {.MyText = "Old Text 3"}

    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles Me.Load

        TextBox1.DataBindings.Add(New Binding("Text", _sampleObject1, "MyText", True, DataSourceUpdateMode.OnValidation, String.Empty))
        TextBox2.DataBindings.Add(New Binding("Text", _sampleObject2, "MyText", True, DataSourceUpdateMode.OnValidation, String.Empty))
        TextBox3.DataBindings.Add(New Binding("Text", _sampleObject3, "MyText", True, DataSourceUpdateMode.OnValidation, String.Empty))

        TextBox1.Text = "New Text 1"
        TextBox2.Text = "New Text 2"
        TextBox3.Text = "New Text 3"

        'Application.DoEvents() '<- won't fix this.
        'TextBox2.Invalidate()  '<- won't fix this.
        'TextBox2.Update()      '<- won't fix this.
        'TextBox2.Refresh()     '<- won't fix this.

        TextBox1.BorderStyle = BorderStyle.Fixed3D
        TextBox2.BorderStyle = BorderStyle.FixedSingle
        TextBox3.BorderStyle = BorderStyle.None
    End Sub
End Class
公共类表单1
私有类SampleObject
公共属性MyText为String=String.Empty
末级
Private _sampleObject1作为带有{.MyText=“Old Text 1”}的新SampleObject
Private _sampleObject2作为带有{.MyText=“Old Text 2”}的新SampleObject
Private _sampleObject3作为带有{.MyText=“Old Text 3”}的新SampleObject
私有子表单1_Load(发送方作为对象,e作为事件参数)处理Me.Load
TextBox1.DataBindings.Add(新绑定(“Text”,_sampleObject1,“MyText”,True,DataSourceUpdateMode.OnValidation,String.Empty))
TextBox2.DataBindings.Add(新绑定(“Text”,_sampleObject2,“MyText”,True,DataSourceUpdateMode.OnValidation,String.Empty))
TextBox3.DataBindings.Add(新绑定(“Text”,_sampleObject3,“MyText”,True,DataSourceUpdateMode.OnValidation,String.Empty))
TextBox1.Text=“新文本1”
TextBox2.Text=“新文本2”
TextBox3.Text=“新文本3”

'Application.DoEvents()'我已经尝试了您的代码,可以确认。如果从设计器中设置了BorderStyle(展开/无),它将按预期工作。它似乎与将BorderStyle更改为与初始值(Fixed3D)不同的内容有关。在ContextChanged中设置断点可以确切地说明原因—基础Win32控件重新创建其句柄—这会提示.NET框架重新处理数据绑定。我不会太努力地去争取,也不会到处找工作。