[VB.NET] Instancier un formulaire plusieurs fois [Résolu]

Instancier un formulaire plusieurs fois [Résolu] [VB.NET] - VB/VBA/VBS - Programmation

Marsh Posté le 20-04-2012 à 09:58:14    

Bonjour,
 
Je suis en train de migrer mes applications VBA en VB.NET pour AutoCAD 2012.  
Dans mon application AutoCAD, j'ouvre le "Dessin A". Dans ce dessin j'instancie un formulaire par le code suivant:
 

Code :
  1. Dim MyForm as New FormDatas
  2. MyForm.Show()


Mon formulaire s'ouvre et à son initialisation (MyForm_Load), les données du dessin en cours (Dessin A) sont affichées.
Par contre si j'ouvre un second "Dessin B" et que j'instancie à nouveau mon formulaire, il conserve les données du Dessin A!
Comment puis-je pallier à ce problème?
 
Merci.


Message édité par mmarle le 24-04-2012 à 15:29:27
Reply

Marsh Posté le 20-04-2012 à 09:58:14   

Reply

Marsh Posté le 24-04-2012 à 15:26:47    

Je viens de trouver!
 
En fait en début du chargement du formulaire, il faut invoquer un argument d’événements (Events Args).
Dans mon cas précis j'ai besoin de tester l'activation de dessin  avec l'événement "DocumentActivated"
 
On a donc le code suivant:
 

Code :
  1. Private Sub MyForm_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
  2.         AddHandler Application.DocumentManager.DocumentActivated, AddressOf docColDocAct
  3.         'Mes instructions'
  4.         End Sub


 
Ensuite AddHandler fait appel à la Sub "docColDocAct" à l'activation d'un document. Puis cette Sub retourne la nouvelle valeur de la variable acCurDb (Variable de type DataBase bien connue des AutoCADiens).
 

Code :
  1. Public Sub docColDocAct(ByVal senderObj As Object, ByVal docColDocActEvtArgs As DocumentCollectionEventArgs)
  2.         'Change la DataBase du dessin courant'
  3.         acCurDb = docColDocActEvtArgs.Document.Database
  4.     End Sub


 
Puis la Sub MyForm_Load reprend son cours.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed