Bonjour à tous,
j'ai refactorisé presque entièrement mon code en POO et j'ai trouvé enfin une architecture que me convient à peu prêt. Je vous embetterais moins souvent maintenant (ça faisait plusieurs années que je cherchais, comme quoi tout arrive avec de la perseverance )
Par contre j'ai ce problème que je cite dans le sujet et que je n'arrive vraiment pas à résoudre.

Mon UI utilise un Bindingsource comme source de données et mon dataGridview est bindé dessus de cette façon :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
MonBindingsource.Datasource = MaDatatable
DatagridviewMain.Datasource = MonBindingsource
Comme j'imagine qu'il faut faire Datagridview.refresh quelque part donc j'ai tenté dans le Bindingsource.CurrentItemChanged (avec un Invoke) mais c'est pas instantané, ça répond 0.5 seconde après et mon Datagridview se redessine très mal en faisant comme ça. (Il y a comme une rémanence lors du redessin).

Voici le code:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
AddHandler _bs.CurrentItemChanged, AddressOf InvoquerBsCurrentItemChanged
 
 Delegate Sub DelegateBsCurrentItemChanged(sender As Object, e As EventArgs)
    Private Sub InvoquerBsCurrentItemChanged(sender As Object, e As EventArgs)
        ' InvokeRequired compare l'ID du thread appelant à l'ID du thread qui a créé le controle. Si ces threads sont différent, renvoie true.
        If Me.InvokeRequired Then
            Dim MyDelegate As New DelegateBsCurrentItemChanged(AddressOf BsCurrentItemChanged)
            Me.Invoke(MyDelegate, sender, e)
        Else
            Call BsCurrentItemChanged(sender, e)
        End If
    End Sub
    Private Sub BsCurrentItemChanged(sender As Object, e As EventArgs)
        DataGridViewMain.Refresh()
    End Sub
Merci beaucoup pour votre aide et votre avis une fois de plus.