| 12
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 
 |  
' La procédure pour déclencher la validation du formulaire :
 Private Sub EventFromUserControls(ByVal sender As Object, ByVal e As System.EventArgs)
        Me.Validate()
    End Sub
 
' Procédure générique qui acceptent les événements de validation du DatagridView ainsi que les contrôles simples :
 Private Sub EventControlsValidating(ByVal sender As Object, ByVal e As System.ComponentModel.CancelEventArgs)
        Dim Ctrl As Control = CType(sender, Control)
        Dim ColChangingName As String = Nothing 
 
        If TypeOf Ctrl Is DataGridView Then
            ' la propriété dataBinding du Controle n'est pas assignée (Cas des DataGridView)
            Dim dg As DataGridView = CType(Ctrl, DataGridView)
            ColChangingName = dg.CurrentCell.OwningColumn.DataPropertyName
        Else
            ' la propriété dataBinding du Controle est assignée (Cas des Controles simples)
            ColChangingName = Ctrl.DataBindings.Item(0).BindingMemberInfo.BindingMember
        End If
 
        Dim ColChangingValue As Object = Nothing
        Dim RowView As DataRowView = CType(MainBindingSourceTaches.Current, DataRowView)
        Dim Row As DataRow = RowView.Row
        Dim OriginaleValue As Object = Row(ColChangingName)
        Dim Isvalide As Boolean = False
        Dim errorMsg As String = Nothing
 
        ' Obtient la valeur réelle du contrôle débarrassée de son formatage :
        Get_Ctrl_RealBindingValueWithoutFormat(sender, ColChangingValue)
 
        ' Retourne le résultat de la validation :
        Isvalide = CalculRowValues(Row, "UserControls", ColChangingName, ColChangingValue, errorMsg)
 
        If Isvalide = True Then
        ' Si c'est valide on  ne fait rien, les écritures sont effectués dans Validated
        Else
        ' Si c'es invalide on annule :
            If TypeOf Ctrl Is DataGridView Then
                ' la propriété dataBinding du Controle n'est pas assignée (Cas des DataGridView)
                Dim dg As DataGridView = CType(Ctrl, DataGridView)
                e.Cancel = True
            Else
                ' la propriété dataBinding du Controle est assignée (Cas des Controles simples)
                e.Cancel = True
                Ctrl.DataBindings.Item(0).ReadValue()
            End If
        End If
    End Sub
 
' Procédure générique, écrit dans la source de données si les modifications n'ont pas été annulées :
 
  Private Sub EventControlsValidated(ByVal sender As Object, ByVal e As System.ComponentModel.CancelEventArgs)
        Dim Ctrl As Control = CType(sender, Control)
        Dim ColChangingName As String = Nothing
 
        If TypeOf Ctrl Is DataGridView Then
            ' la propriété dataBinding du Controle n'est pas assignée (Cas des DataGridView)
            Dim dg As DataGridView = CType(Ctrl, DataGridView)
            ColChangingName = dg.CurrentCell.OwningColumn.DataPropertyName
        Else
            ' la propriété dataBinding du Controle est assignée (Cas des Controles simples)
            ColChangingName = Ctrl.DataBindings.Item(0).BindingMemberInfo.BindingMember
        End If
 
        Dim ColChangingValue As Object = Nothing
        Dim RowView As DataRowView = CType(MainBindingSourceTaches.Current, DataRowView)
        Dim Row As DataRow = RowView.Row
        Dim OriginaleValue As Object = Row(ColChangingName)
        Dim Isvalide As Boolean = False
        Dim errorMsg As String = Nothing
 
        ' Obtient la valeur réelle du contrôle débarrassée de son formatage :
        Get_Ctrl_RealBindingValueWithoutFormat(sender, ColChangingValue)
 
        ' Ecrit dans le DataTable :
        Call WriteRowValues(Row, "UserControls", ColChangingName, ColChangingValue, errorMsg)
 
    End Sub | 
Partager