Lors de ma migration vers .net j'ai remarqué enormément de changement dont un qui me rendais malade, je m'explique :
J'ai fait mon logiciel d'entreprise en mode MDI et dans certain cas selon que j'écrivais un trucs dans une feuille une autre recevais dès le lostfocus la même valeur que j'avais entrée.
En VB6 celà était très simple à faire puisque je mettais par exemple
form1.NomVille.text = me.RechercheVille.text
En .net impossible de faire ça en mode de feuille MDI :'(
Je veux dire par là impossible d'accéder a un control d'une autre form pour lui attribuer une valeur. Si ce n'est que par la solution suivante mais malheureusement non applicable dans le context MDI :((( :
Dim form1 as New Form1
form1.NomVille.text = Me.rechercheVille.text
Donc j'ai fouillé fouillé sur le net pour trouver la solution, pas trouvé malheureusement alors j'ai tout simplement fait en vb6 l'application basic de ce que je voulais faire et puis j'ai demander à vb.net de me convertir l'application.
Stupéfaction il ma générer un code que je vous livre ci-dessous et qui rends en standart toute les commande de vb6
Une capture d'écran avec une petite explication est fournie :o)
Source / Exemple :
' Dans le " Windows Form Designer generated code "
' vous avez ceci de base :
Public Sub New()
MyBase.New()
InitializeComponent()
End Sub
' Ajouter ceci avant le InitializeComponent()
If m_vb6FormDefInstance Is Nothing Then
If m_InitializingDefInstance Then
m_vb6FormDefInstance = Me
Else
Try
'For the start-up form, the first instance created is the default instance.
If System.Reflection.Assembly.GetExecutingAssembly.EntryPoint.DeclaringType Is Me.GetType Then
m_vb6FormDefInstance = Me
End If
Catch
End Try
End If
End If
' Fermé la région " Windows Form Designer generated code "
'Ajouter maintenant cette région :
#Region "Upgrade Support form VB6"
' Attention à Form1 remplacer par le nom de votre feuille
Private Shared m_vb6FormDefInstance As Form1
Private Shared m_InitializingDefInstance As Boolean
Public Shared Property DefInstance() As Form1
Get
If m_vb6FormDefInstance Is Nothing OrElse m_vb6FormDefInstance.IsDisposed Then
m_InitializingDefInstance = True
m_vb6FormDefInstance = New Form1
m_InitializingDefInstance = False
End If
DefInstance = m_vb6FormDefInstance
End Get
Set(ByVal Value As Form1)
m_vb6FormDefInstance = Value
End Set
End Property
#End Region
Conclusion :
Avec ça plus de problème toute les manip de vb6 sont disponible :o)
Maintenant pour avoir l'accès au control d'une autre form faite :
Exemple , une statusbar dans la feuille MDI principal appellée form1
Vous voulez au départ d'une feuille fille changer le statut d'un panneaux ou il est écrit par exemple INACTIF en ACTIF
Au départ de n'importe quel form faite :
form1.DefInstance.statusbar1.panels(0).text = "ACTIF"
Vous l'aurez compris c'est le DefInstance qui nous donne l'accès :o)
Voilà si j'ai pas été claire ou que vous ne comprenner pas n'hésiter pas a me le dire, si il faut je ferais un petit zip avec une application en exemple claire et commenté.
Bien à vous
Didier
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.