Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/16.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 - Fatal编程技术网

Vb.net 绑定字段出错时如何移动焦点?

Vb.net 绑定字段出错时如何移动焦点?,vb.net,Vb.net,我有一个VB.Net应用程序,其中一些字段绑定到数据表 这是我的密码: Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load Me.DxErrorProvider1 = New DevExpress.XtraEditors.DXErrorProvider.DXErrorProvider(Me.components) Dim DT As DataTable = GetDT()

我有一个VB.Net应用程序,其中一些字段绑定到数据表

这是我的密码:

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

    Me.DxErrorProvider1 = New DevExpress.XtraEditors.DXErrorProvider.DXErrorProvider(Me.components)
    Dim DT As DataTable = GetDT()
    Me.TextEdit1.DataBindings.Add("EditValue", DT, "C1", True, DataSourceUpdateMode.OnValidation, "")
End Sub

Function GetDT() As DataTable
    Dim DT As New DataTable

    Dim i As Integer = 0
    DT.Columns.Add(New DataColumn("C1", i.GetType))

    Dim R As DataRow = DT.NewRow
    R.Item(0) = 15
    DT.Rows.Add(R)

    Return DT
End Function
当用户在字段中键入错误的值时。焦点不能再移动了

完整的代码实际上包含多个字段,我希望允许用户能够移动下一个字段,即使有错误的值。此时会显示一个红色图标,因此他可能希望稍后更正它

请问有没有办法做到这一点


谢谢。

以下是解决方案:

Me.AutoValidate = Windows.Forms.AutoValidate.EnableAllowFocusChange

我当时想得很夸张,我想这会挺过去的,我希望这会对我有所帮助

        AddHandler TextEdit1.LostFocus, Sub()
                                            If TextEdit1.ErrorText <> "Focus released" And TextEdit1.ErrorText <> ""  Then
                                                TextEdit1.DataBindings(0).DataSourceUpdateMode = DataSourceUpdateMode.Never
                                                DxErrorProvider1.SetError(TextEdit1, "Focus released")
                                            Else
                                                DxErrorProvider1.SetError(TextEdit1, "")
                                                TextEdit1.DataBindings(0).DataSourceUpdateMode = DataSourceUpdateMode.OnPropertyChanged
                                            End If
                                        End Sub
AddHandler TextEdit1.LostFocus,Sub()
如果TextEdit1.ErrorText“焦点已释放”和TextEdit1.ErrorText“”,则
TextEdit1.DataBindings(0.DataSourceUpdateMode=DataSourceUpdateMode.Never
DxErrorProvider1.SetError(TextEdit1,“焦点已释放”)
其他的
DxErrorProvider1.SetError(TextEdit1,“”)
TextEdit1.DataBindings(0).DataSourceUpdateMode=DataSourceUpdateMode.OnPropertyChanged
如果结束
端接头

此外,如果数据无效,则无法将新数据提交到基础
DataRowView
,则可以在这两个段中的任何一个中添加
TextEdit1.BackColor=Color.red
TextEdit1.BackColor=Color.Empty
。为了防止试图提交数据,我认为您必须将相关
绑定的
数据源更新模式
更改为
从不
。如果需要,则必须自己处理控件失去焦点时的验证,然后在提交更改时调用
Binding
上的
WriteValue
。实际上,我不想提交新数据。我只想将焦点移到另一个字段,并使其出现错误。如果用户的语言不是英语怎么办?无法识别“无效值”。。。解决方案非常简单:Me.AutoValidate=Windows.Forms.AutoValidate。EnableAllowFocusChange@ThomasCarlton如果编码人员不想让其母窗体的焦点控件处于未绑定状态,我可以将其保留下来。