如何在绑定字段中出错时移动焦点?

时间:2017-07-05 00:09:48

标签: 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()
    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

当用户在字段上键入错误的值时。焦点不能再动了。

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

无论如何要实现这一目标吗?

感谢。

2 个答案:

答案 0 :(得分:1)

以下是解决方案:

Me.AutoValidate = Windows.Forms.AutoValidate.EnableAllowFocusChange

答案 1 :(得分:-1)

我正在考虑周围的事情,并且我认为这个过程,我希望它有助于一些方法。

        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

您也可以在两个IF段中添加TextEdit1.BackColor = Color.redTextEdit1.BackColor = Color.Empty