Retrouver les fonctionnalités de vb6

Contenu du snippet

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

A voir également

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.