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

Windows Forms Discussion :

[vb.net] probleme avec un Usercontrol


Sujet :

Windows Forms

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 25
    Points : 15
    Points
    15
    Par défaut [vb.net] probleme avec un Usercontrol
    Bonjour j'ai un problème avec mon usercontrol,
    en fait à l'interieur de la classe usercontrol j'ai crée un classe Trace regroupant toutes les procédure nécessaires à l'affichage de mes composants. Seulement dans cette classe je n'ai accès à aucun de mes controles.
    J'ai essayé Inherits usercontrol mais ca marche pas non plus...

    (je précise que je suis débutant en .net mais pas en vb)


    Public Class Usercontrol

    Private _Largeur As Integer = 30

    Public Property Largeur() As Integer
    Get
    Return _Largeur
    End Get
    Set(ByVal value As Integer)
    _Largeur = value
    Usercontrol.Trace.Setlargeur(_Largeur )
    End Set
    End Property

    'classe regroupant toutes les fonctions permettant de tracer mon usercontrol
    Public Class Trace

    Public Shared Sub SetLargeur(Byval largeur as integer)
    Usercontrol.button1.width=largeur
    End Sub
    ...

    End Class

    End Class


    (en rouge c'est ce qui ne marche pas)

    j'espere avoir été clair,
    merci d'avance

  2. #2
    Membre éprouvé
    Avatar de NiamorH
    Inscrit en
    Juin 2002
    Messages
    1 309
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 1 309
    Points : 1 051
    Points
    1 051
    Par défaut
    salut,
    il y a plein de choses qui me semblent clocher dans ton code.

    Je ne vois aucune raison de créér une nouvelle classe pour ce que tu veux faire. Et encore moins d'avoir recours à une methode partagée "Shared".

    à mon avis ça devrait mieux marcher comme ça :

    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
    Public Class Usercontrol1
     
        Private _Largeur As Integer = 30 
     
        Public Property Largeur() As Integer 
            Get 
                Return _Largeur 
            End Get 
            Set(ByVal value As Integer) 
                _Largeur = value 
                Me.Setlargeur(_Largeur ) 
            End Set 
        End Property 
     
        Private Sub SetLargeur(Byval largeur as integer) 
            Me.button1.width=largeur 
        End Sub
     
    End Class
    à mon avis tu as cherché à beaucoup te compliquer la vie.
    Tu n'es même pas obligé d'utiliser une méthode pour une seule ligne de code si le Set de ta propriété est la seule à l'utiliser.

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 25
    Points : 15
    Points
    15
    Par défaut
    merci de la réponse,

    Certes ce n'est pas utile de créer une sous classe mais c'était en fait pour regrouper toutes les procédures liées à l'affichage ensemble et pouvoir les appeler de cette facon Usecontrol.Trace.SetLargeur, Usecontrol.Trace.SetHauteur ...

    Mais sinon mon probleme n'est pas réellement là
    en fait j'ai ma classe Usercontrol1 et une autre en dessous, et je voudrais appeler la fonction SetLargeur à partir de la deuxieme classe, c'est pourquoi j'avais mis Shared, mais en mettant shared du coup je peux plus faire me.button1.width, ca marche plus je sais pas pourquoi

    Public Class Usercontrol1

    End Class

    '2e classe permettant de créer un type font expandable

    Public Class Font

    End Class

  4. #4
    Membre éprouvé
    Avatar de NiamorH
    Inscrit en
    Juin 2002
    Messages
    1 309
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 1 309
    Points : 1 051
    Points
    1 051
    Par défaut
    En fait ce n'est pas que ce ne soit pas "utile", c'est que c'est tout à fait illogique. ça ne peut pas marcher.

    Les méthodes qui modifient les propriétés d'une instance d'un objet doivent être placées dans l'objet lui même!

    Tu dis que ta démarche est motivée par le désir de regrouper ces méthodes, je veux bien mais la logique ne suit pas. Prefixe tes méthodes comme ça elle seront rassemblées par ordrealphabetique.. Ou alors montre nous un exemple existant de ce que tu veux faire.

    J'ai l'impression que tu pense optimiser mais en réalité tu complique grandement..

  5. #5
    Membre éprouvé
    Avatar de NiamorH
    Inscrit en
    Juin 2002
    Messages
    1 309
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 1 309
    Points : 1 051
    Points
    1 051
    Par défaut
    ps : tu ne peux pas accéder à des instances extérieures d'objet dans une méthode partagée, il faut que tu passe ton button en parametre.
    mais alors... tu te complique..

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 25
    Points : 15
    Points
    15
    Par défaut
    J'ai essayé de simplifier mais ce ne marche toujours pas.

    En fait dans ma classe Usercontrol, j'ai une sous classe qui definit un type de propriétés avec plusieurs champs. (par exemple une propriété de type font comporte des sous propriétés Name,Size, Unit,Bold...)
    et au moment ou je change ces valeurs dans la fenetre de propriétés (name, size ...) je voudrais appliquer une procédure se trouvant dans la classe usercontrol.
    Mais Probleme, en declarant ma procédure Public Sub, je n'y ai pas acces depuis la sous classe font.
    En la déclarant comme Public Shared Sub, j'y ai acces mais du coup à l'interieurde la sub je n'ai plus acces aux controles du usercontrol...

    Peut-être que je me complique la vie mais je vois franchement pas comment faire autrement...
    Je peux vous envoyer le code si vous voulez pour mieux comprendre ce que j'essaie d'expliquer avec mes mots de débutant en .net

    merci d'avoir passé du temps à me répondre

  7. #7
    Membre éprouvé
    Avatar de NiamorH
    Inscrit en
    Juin 2002
    Messages
    1 309
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 1 309
    Points : 1 051
    Points
    1 051
    Par défaut
    oui montre nous le code, on verra mieux.

  8. #8
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 25
    Points : 15
    Points
    15
    Par défaut
    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
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    Imports System.ComponentModel
    Imports System.Drawing
     
    Public Class Clavier
     
    #Region "Types de propriétés"
    <TypeConverter(GetType(System.ComponentModel.ExpandableObjectConverter))> _
        Public Class Type_Cadre
            Private _CadreGauche As Integer
            Private _CadreDroite As Integer
            Private _CadreHaut As Integer
            Private _CadreBas As Integer
     
            <Description("Espacement à gauche du clavier")> _
            Public Property CadreGauche() As Integer
                Get
                    Return _CadreGauche
                End Get
                Set(ByVal value As Integer)
                    _CadreGauche = value
     
                End Set
            End Property
            <Description("Espacement à droite du clavier")> _
            Public Property CadreDroite() As Integer
                Get
                    Return _CadreDroite
                End Get
                Set(ByVal value As Integer)
                    _CadreDroite = value
                End Set
            End Property
            <Description("Espacement au dessus du clavier")> _
            Public Property CadreHaut() As Integer
                Get
                    Return _CadreHaut
                End Get
                Set(ByVal value As Integer)
                    _CadreHaut = value
     
                End Set
            End Property
            <Description("Espacement au dessous du clavier")> _
            Public Property CadreBas() As Integer
                Get
                    Return _CadreBas
                End Get
                Set(ByVal value As Integer)
                    _CadreBas = value
                End Set
            End Property
     
            'Permet d'afficher par ex "10;20;10;10" en face de la propriété de type Cadre
            Public Overrides Function ToString() As String
                Return String.Format("{0};{1};{2};{3}", _CadreGauche, _CadreDroite, _CadreHaut, _CadreBas)
            End Function
     
            'permet d'initialiser la propriété avec les parametres spécifiés dans new()
            Public Sub New(ByVal gauche As Integer, ByVal droite As Integer, ByVal haut As Integer, ByVal bas As Integer)
                _CadreGauche = gauche
                _CadreDroite = droite
                _CadreHaut = haut
                _CadreBas = bas
            End Sub
        End Class
     
    #End Region
     
    #Region "Variables"
     
        Private _Cadre As Type_Cadre = New Type_Cadre(10, 10, 10, 10)
     
    #End Region
     
    #Region "Propriétés"
     
        <Category(" Clavier"), Description("Parametrage du clavier")> _
        Public Property Cadre() As Type_Cadre
            Get
                Return _Cadre
            End Get
            Set(ByVal value As Type_Cadre)
                _Cadre = value
     
            End Set
        End Property
    #End Region
     
     
    #Region "Méthodes"
     
        Public Sub SetCadre(ByVal gauche As Integer, ByVal droite As Integer, ByVal haut As Integer, ByVal bas As Integer)
            Me.Panel1.Left = gauche
        End Sub
     
     
    #End Region
     
     
    End Class

  9. #9
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 25
    Points : 15
    Points
    15
    Par défaut
    je précise c'est:

    Public Sub SetCadre(ByVal gauche As Integer, ByVal droite As Integer, ByVal haut As Integer, ByVal bas As Integer)
    Me.Panel1.Left = gauche
    End Sub

    qui pose probleme (voir ce que j'ai expliqué plus haut)

  10. #10
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 25
    Points : 15
    Points
    15
    Par défaut
    up

Discussions similaires

  1. [ADO.NET] Problème avec Insert dans base de données
    Par mpascolo dans le forum Accès aux données
    Réponses: 9
    Dernier message: 24/01/2005, 09h36
  2. [VB.NET] Probleme avec les fichiers!!
    Par ludovic85 dans le forum Windows Forms
    Réponses: 2
    Dernier message: 20/01/2005, 17h12
  3. Réponses: 2
    Dernier message: 02/09/2004, 17h38
  4. [VB.Net] Probleme avec dialogues (confirm et alert)
    Par crackity_jones666 dans le forum ASP.NET
    Réponses: 5
    Dernier message: 26/11/2003, 22h05

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