[VB.NET]Comment modifier un textbox a partir d'une dll?
Bonjour,
Mon problème est un peu complexe à mes yeux alors j'espère que je vais être capable de bien l'expliquer.
Quand je clique sur le bouton Démarrer un traitement s'exécute, mais je veux que l'utilisateur puisse cliquer sur Arrêter pour arrêter le traitement, alors je lance mon traitement dans un thread:
Code:
1 2 3 4 5
| Private Sub cmdDemarrer_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdDemarrer.Click
nouveauThread = New Thread(AddressOf copiage)
nouveauThread.Start()
End Sub |
Dans mon traitement je modifie mon interface, mais pour ce faire je dois créer un Event. que j'ai fait comme suis:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
| 'Modifier le listBox destination
Private Event lstboxChanged(ByVal table As String, ByVal clear As Boolean)
Delegate Sub AssignerLstbox(ByVal table As String, ByVal clear As Boolean)
Private Sub AfficherTable(ByVal table As String, ByVal clear As Boolean) Handles Me.lstboxChanged
If lstDestination.InvokeRequired Then
Dim moi As New AssignerLstbox(AddressOf AfficherTable)
Invoke(moi, New Object() {table, clear})
Else
If clear Then
lstDestination.Items.Clear()
Else
lstDestination.Items.Add(table)
End If
End If
End Sub |
Et je lance un RaiseEvent lstboxChanged(strNomTable, False) pour modifier mon listbox.
Cependant je dois maintenant utiliser une fonction d'une dll (que j'ai accès au code) et dans cette fonction je voudrais pouvoir modifier un élément de mon interface.
Alors je me demande comment faire?
Voici ce que j'ai fait mais ça ne fonctionne pas.
DANS maDLL:
Code:
1 2 3 4 5
| Public Event modifierProgressB(ByVal pourcentage As Double, ByVal pb As Windows.Forms.ProgressBar)
Protected Overloads Function ImporterR() As Integer
RaiseEvent modifierProgressB(intCpt / nbEnr * 100, progressBarre)
End Function |
DANS MON frmPRINCIPALE:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| Imports maDLL
Public Class frmPrincipale
Delegate Sub AssignerProgressT(ByVal progression As Double, ByVal pb As Windows.Forms.ProgressBar)
Private Sub AfficherProgressT(ByVal progression As Double) Handles maDLL.modifierProgressB
If pgbTable.InvokeRequired Then
Dim moi As New AssignerProgressT(AddressOf AfficherProgressT)
Invoke(moi, New Object() {progression})
Else
pgbTable.Value = CInt(progression)
End If
End Sub
End Class |
J'ai une erreur sur maDLL dans frmPrincipale....
Je suis à bout c'est vendredi, pte que je vais trouver de quoi lundi.
Merci d'y jeter un coup d'oeil.