IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB.NET Discussion :

reference to a non-shared member requires an object reference


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre émérite

    Homme Profil pro
    Inscrit en
    Mars 2012
    Messages
    691
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Israël

    Informations forums :
    Inscription : Mars 2012
    Messages : 691
    Par défaut reference to a non-shared member requires an object reference
    Bonjour
    Je développe sous vs2019.
    J'ai un projet windows form app contenant plusieurs forms .
    Jusqu'à hier tout allait bien et depuis j'ai cette erreur reference to a non-shared member requires an object reference
    à toutes les lignes de code comme form1.Show ou form2.visible = true
    en quoi il faut écrire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     dim form1 =  new Form1  
     form1.Show
    j'ai verifié avec un autre projet contenant 2 form form1 et form2 et là aucune erreur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Public Class Form1
        Private Sub Button1_MouseClick(sender As Object, e As MouseEventArgs) Handles Button1.MouseClick
            Form2.Show()
            Me.Close()
        End Sub
    End Class
    Merci

  2. #2
    Membre Expert Avatar de Phil Rob
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2013
    Messages
    1 613
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Novembre 2013
    Messages : 1 613
    Par défaut
    Bonsoir,

    dim form1 = new Form1
    form1.Show
    Il y a au moins une erreur dans le code ci-dessus : Le nom de ta "variable" et le nom de l'objet sont les mêmes.

    Essaie donc ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Dim MonForm1Actuel As Form =  New Form1  
    MonForm1Actuel.Show
    Attention, pour des Forms présents dans le projet (évidement), la syntaxe avec New et celle sans le New (comme dans ton deuxième exemple) fonctionnent toutes les deux, mais les effets sont un peu différents. Si cela t'intéresse, je dois avoir un exemple approprié quelque part, je le chercherai.


  3. #3
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 197
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 197
    Par défaut
    vb.net a toujours eut une facilité d'écriture qui fait qu'il créé une variable par form ayant le même nom que le form permettant d'écrire Form1.Show
    mais c'était une mauvaise idée, il faut bien instancier un form1 ou garder une référence dessus pour changer des choses dessus car à un instant T il peut y avoir plusieurs instances du même form, et ca devient caduque

    après pourquoi ton erreur est apparue du jour au lendemain (sachant que ca aurait été bien qu'elle apparaisse en 2003) je ne sais pas, tu n'as pas changé de version ou de type de projet ?
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  4. #4
    Membre émérite

    Homme Profil pro
    Inscrit en
    Mars 2012
    Messages
    691
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Israël

    Informations forums :
    Inscription : Mars 2012
    Messages : 691
    Par défaut
    Bonsoir

    dim form1 = new Form1
    form1.Show
    Si on peut le compiler accepte

    Le problème n'est pas de corriger toutes les erreurs (40 au moins et toutes la meme erreur ) c´est qu´il ne devait pas avoir d´erreur.
    Si tu as 2 forms form1 et form2 et dans form1 tu écris form2.show c'est correct il n'est pas nécessaire d'écrire

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    dim formx  as new form2
    formx.show
    De toute façon j'ai ouvert un nouveau projet et add existing item avec tous les forms et class de l´autre projet et c´est bon plus d'erreur
    reference to a non-shared member requires an object reference

  5. #5
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 197
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 197
    Par défaut
    Citation Envoyé par shayw Voir le message
    c'est qu'il ne devrait pas y avoir d'erreur.
    si, c'est une erreur de débutant de penser ça

    imagine une appli où une fenêtre sert à afficher le détail d'un élement, et tu as une fenetre principales qui affiche les éléments
    tu peux cliquer sur un élément et faire new FormElement puis instance.show
    et si tu clic sur un autre élément sans avoir fermé le précédent (pour comparer entre les 2 petites fenetres par exemple) alors tu refais un new FormElement puis instance.show
    déjà si tu fais FormElement.Show, elle est déjà ouverte donc ca ne va pas en ouvrir une 2ème, et si tu fais FormElement.Hide alors qu'il y en a deux d'ouvertes ca fait quoi ?

    comme je l'ai dis vb.net a fait l'énorme erreur de vouloir être compatible avec vb6 mais cette syntaxe tolérée va à l'encontre de la programmation orientée objet, il faut une instance d'une chose pour s'adresser à elle
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 8
    Dernier message: 13/06/2014, 21h56
  2. Réponses: 3
    Dernier message: 11/06/2012, 09h36
  3. Réponses: 2
    Dernier message: 26/01/2012, 14h53
  4. Réponses: 3
    Dernier message: 25/10/2008, 15h06
  5. Réponses: 1
    Dernier message: 27/01/2005, 06h36

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo