Retrouver les fonctionnalités de vb6

Soyez le premier à donner votre avis sur cette source.

Snippet vu 10 578 fois - Téléchargée 28 fois

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

Ajouter un commentaire Commentaires
Messages postés
40
Date d'inscription
vendredi 7 mars 2003
Statut
Membre
Dernière intervention
9 février 2013

Bonjour...

J'essayais de comprendre vb6 fr.
Un de mes amis pas conseiller de transférer en vb.net 2005 fr.
Je suis en train de migrer vers vb.net.

Je crois que c'est mieux mais ca prend beaucoup de patience car pour moi le pire c'est d'attendre toujours à minute que tu changes de quoi et enregistre ca prend un éternité 2 minute et plus souvent

Si tu fait 50 changement ca veut dire pratiquement d'attende en tout.Tu vient de perdre 1 heure et plus.

J'ai hate de ne plus avoir d'erreur de conversion de vb6 en vb.net

Pourtant j'ai 512 Mod de RAM

En passant j'avais faite une gestion d'erreur complet pour vb6
qui fonctionnait très bien, et ca ne fonctionne pas ou en partie,
en vb.net

C'est qui me froisse le plus c'est que je veut avoir le numéro de ligne qui fait l'erreur et je n'ai pas trouver le moyen encore.

Merci

Jean-Marc
Messages postés
586
Date d'inscription
lundi 7 janvier 2002
Statut
Membre
Dernière intervention
10 février 2010
1
à nouveau d'accord avec toi marcA :)
la poo a ses avantages et ses 'inconvénients' (notemment il faut savoir l'utiliser correctement pour profiter de ses avantages :) ).
Pour la migration VB -> VB.NET, si c'est une migration 1:1 (pas de modification des fonctionnalités de l'application) c'est inutile !! Quels sont les avantages ? Un responsable Microsoft te dira même que c'est 'stupide' (et je ne l'invente pas, je suis fréquemment en réunion avec eux...).
Quel est l'avantage de passer d'une '2CV' à une 'Porsche' si on continue à conduire mal et lentement ?

spy166: on fait comme on veut ok, mais appliquer un modèle MVC t'évite pas mal d'ennuis (à moins que ton application n'évolue plus.. ce qui n'est pas souvent le cas).

yop
Messages postés
12
Date d'inscription
lundi 14 avril 2003
Statut
Membre
Dernière intervention
3 août 2010

Je crois aussi que c'est dommage de passer en VB.Net et de ne pas profiter de ses nouvelles possibilités. Je travailles toujours en VB6, mais j'essaye déjà de faire de l'orienté objet (seules des méthodes changent des propriétés...). Je ne vois pas du tout l'avantage de passer en VB.Net si ce n'est pour profiter des avantages de l'OO. D'un autre coté, il faut mieux analyser ce que l'on veut faire avant de le faire en orienté objet, donc l'avantage n'est pas toujours évident. Par contre, une bonne analyse permet de gérer des modifications dans des autres fenêtres que celle que l'utilisateur change automatiquement...
Messages postés
207
Date d'inscription
jeudi 21 novembre 2002
Statut
Membre
Dernière intervention
29 mars 2006

Ben on fait bien comme on veut.
Personnellement je n'ai jamais utilisé cette méthode car je n'en ai pas l'utilité, mais je pense que ça peut être assez utile tout de même.
Par exemple pour une feuille d'options ou de paramètres avec un bouton "Appliquer".
Messages postés
586
Date d'inscription
lundi 7 janvier 2002
Statut
Membre
Dernière intervention
10 février 2010
1
marcA

D'accord avec toi... en poo il y a les objets business.
Donc dans ce cas:
la form2 change la valeur de l'objet
lorsque la form1 reçoit le focus, elle peut se rafraîchir avec les nouvelles valueurs de l'objet (apr example).

On peut également utiliser des delegates

Mais apparemment, les personnes qui passent de VB à VB.NET ne font pas la poo...malheureusement :(

Qu'en penses-tu ?
Afficher les 16 commentaires

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.