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 :

'Me' n'est pas valide dans un module


Sujet :

VB.NET

  1. #1
    Nouveau membre du Club
    Inscrit en
    Janvier 2011
    Messages
    39
    Détails du profil
    Informations forums :
    Inscription : Janvier 2011
    Messages : 39
    Points : 26
    Points
    26
    Par défaut 'Me' n'est pas valide dans un module
    Bonjour,
    alors voici le problème :
    Je créée des traits avec cette méthode :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Public Sub graph()
    Dim g as graphics = Me.CreateGraphics
    mypen.Width=2
    g.DrawLine(mypen, 0,630,1678,630)
    End Sub
    Cependant je le réutilise dans plusieurs pages, donc j'aurais souhaité le mettre dans un module ...
    Problème on ne peut pas mettre de 'me' dans un module, et si je mets cette procédure en 'Public' dans une autre page, cela ne marche pas non plus.
    J'ai trouvé comme solution de créer une classe, mais sans succès.
    Si quelqu'un aurait une solution ...
    Merci.

  2. #2
    Membre émérite Avatar de mactwist69
    Homme Profil pro
    Développement VB.NET
    Inscrit en
    Janvier 2007
    Messages
    1 707
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Développement VB.NET
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 707
    Points : 2 528
    Points
    2 528
    Par défaut
    Ou se trouve la procédure CreatGraphics ?

    Si elle est dans ton module, pas besoin de 'Me'
    L'avenir appartient à ceux... dont les ouvriers se lèvent tôt. (Coluche)

  3. #3
    Nouveau membre du Club
    Inscrit en
    Janvier 2011
    Messages
    39
    Détails du profil
    Informations forums :
    Inscription : Janvier 2011
    Messages : 39
    Points : 26
    Points
    26
    Par défaut
    Et bien ma procédure graph peut se trouver dans n'importe quelle page, peu importe.
    Mais CreateGraphics est une méthode donc demande obligatoirement quelque chose devant le '.'
    Donc si je ne mets pas de 'Me' ou de nom de feuille, cela ne marche pas.
    De même si je mets le nom d'une feuille, les traits seront tracés seulement dans la feuille...

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

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 172
    Points : 25 112
    Points
    25 112
    Par défaut
    me désigne l'instance de la classe dans laquelle le code s'exécute actuellement
    en tapant me. ca te propose tous les membres de la classe
    un module n'est pas une classe, donc tu ne peux pas faire me.
    de plus tu as déjà pu faire me.Creategraphics car là où tu l'avais tapé, tu était sur un form et form a une méthode creategraphics, mais cette méthode n'est pas fait pour etre appelée de n'importe où, elle ne créé d'ailleurs pas un graphics, mais fournit un graphics lié au form

    il y a des constructeurs shared sur la classe graphics
    si c'est un graphics lié à une image c'est par exemple
    dim g as graphics = graphics.fromimage(monbitmap)

    si tu veux un graphics lié à un control, il faut demander le control en paramètre de ta méthode
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Février 2010
    Messages
    291
    Détails du profil
    Informations personnelles :
    Âge : 55
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 291
    Points : 390
    Points
    390
    Par défaut
    Bonjour,

    Creategraphics est une méthode relative à un contrôle (picturebox par exemple).
    L'idée est donc de définir une classe avec une propriété de type graphics en lecture écriture. La ou les méthode de cette classe utiliseront l'objet graphics encapsulé, et l'affectation de cette propriété ce fera en fonction des besoins et du contrôle associé.

    Exemple

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
     
    Public Class Mdc
     
    Private mG As Graphics
        Public Property G() As Graphics
            Get
                Return mG
            End Get
            Set(ByVal value As Graphics)
                mG = value
            End Set
        End Property
    Public Sub New(ByVal pict As PictureBox)
            mPicture = pict
            mG = mPicture.CreateGraphics
        End Sub
     
    End Class
     
     
    Private Sub FormGenerale_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
     
     
            mMDC = New Mdc(PictureBox1)
     
     
        End Sub
     
    Private Sub PictureBox1_Paint(ByVal sender As Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles PictureBox1.Paint
            If mMDC Is Nothing Then Exit Sub
     
            mMDC.G = e.Graphics
    ' ici les méthodes de dessin
     
            mMDC.G = PictureBox1.CreateGraphics
        End Sub

  6. #6
    Nouveau membre du Club
    Inscrit en
    Janvier 2011
    Messages
    39
    Détails du profil
    Informations forums :
    Inscription : Janvier 2011
    Messages : 39
    Points : 26
    Points
    26
    Par défaut
    Problème résolu !
    J'ai laissé la procédure dans le module mais cette fois je lui envoie la feuille en paramètre comme ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    Public Sub graph (byval o as object)
    Dim g as graphics = o.CreateGraphics
    mypen.Width = 2 
    With g
    .DrawLine(mypen, ..., ..., ..., ...)
    End With
    End Sub
    En l'appelant ainsi dans les Form
    Voilà j'espère que ça pourra aider d'autres personnes

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

Discussions similaires

  1. [Débutant] Méthode n'est pas valide dans le contexte donné
    Par Blodsvept dans le forum C#
    Réponses: 9
    Dernier message: 23/06/2015, 09h48
  2. Réponses: 11
    Dernier message: 08/05/2014, 18h10
  3. Réponses: 7
    Dernier message: 25/01/2012, 11h29
  4. Réponses: 3
    Dernier message: 16/05/2006, 16h34
  5. pb Displaylabel n'est pas conservé dans DataSet
    Par dem dans le forum Composants VCL
    Réponses: 2
    Dernier message: 17/10/2005, 09h55

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