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 :

[VS2005] Probleme avec InitializeComponent


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    135
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 135
    Par défaut [VS2005] Probleme avec InitializeComponent
    Bonjour,

    Lorsqu'on crée son propre UserControl, et qu'on l'ajoute à un formulaire, Visual Studio 2005, remplie automatiquement sa methode InitializeComponent, on définissant les propriétés du Usercontrol. Ce qui cause des problèmes si le UserControls à des valeurs par défaut.

    Par exemple : Dans le UserControl :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Public Class MyUserControl
     
        Private _MyProperty As String = "0.000000"
        Public Property MyProperty() As String
            Get
                Return Me._MyProperty
            End Get
            Set(value As String)
                Me._MyProperty = value
            End Set
        End Property
     
    End Class
    Dans le formulaire qui contient mon UserControl
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Public Class Form1
     
        Public Sub New()
     
            ' Cet appel est requis par le Concepteur Windows Form.
            InitializeComponent
     
        End Sub
     
    End Class
    Dans le fichier form1.Designer.vb
    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
        . . .
     
        'REMARQUE*: la procédure suivante est requise par le Concepteur Windows Form
        'Elle peut être modifiée à l'aide du Concepteur Windows Form.  
        'Ne la modifiez pas à l'aide de l'éditeur de code.
        <System.Diagnostics.DebuggerStepThrough()> _
        Private Sub InitializeComponent()
     
            . . .
     
            '
            'MyUserControl1
            '
            Me.MyUserControl1.Dock = System.Windows.Forms.DockStyle.Fill
            Me.MyUserControl1.MyProperty = "0.000000"
            Me.MyUserControl1.Location = New System.Drawing.Point(0, 18)
            Me.MyUserControl1.Name = "MyUserControl1"
            Me.MyUserControl1.Size = New System.Drawing.Size(304, 123)
            Me.MyUserControl1.TabIndex = 0
     
            . . .
     
        End Sub
    Comment faire en sorte (certainement un attribut sur la propriété MyUserControl.MyProperty) que VS2005 ne génère pas la ligne d'initialisation de la propriété dans InitializeComponent ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Me.MyUserControl1.MyProperty = "0.000000"

  2. #2
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 204
    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 204
    Par défaut
    un attribut permet de spécifier à vs de ne pas enregistrer (sérialiser pour etre exact) une propriété

    <system.componentmodel.designerserializationvisibility(hidden)>

    ou un truc dans le genre
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  3. #3
    Membre émérite
    Inscrit en
    Août 2006
    Messages
    550
    Détails du profil
    Informations personnelles :
    Âge : 50

    Informations forums :
    Inscription : Août 2006
    Messages : 550
    Par défaut
    Le designer ne génère pas de sérialisation si la valeur de ta propriété est la valeur par défaut.
    Il suffit simplement de lui indiquer quelle est la valeur par défaut

    Code vb.net : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
        Private _MyProperty As String = "0.000000"
        <DefaultValue("0.000000")> _
        Public Property MyProperty() As String
            Get
                Return Me._MyProperty
            End Get
            Set(value As String)
                Me._MyProperty = value
            End Set
        End Property

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    135
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 135
    Par défaut
    Merci pour vos réponses, l'attribut system.componentmodel.designerserializationvisibilityhidden semble fonctionner. Merci Kelpan, j'avais cru constater ce phenomène, mais certaine propriété corresponde à des classes pour lesquelle on ne peut pas définir de valeur par défaut.

  5. #5
    Membre émérite
    Inscrit en
    Août 2006
    Messages
    550
    Détails du profil
    Informations personnelles :
    Âge : 50

    Informations forums :
    Inscription : Août 2006
    Messages : 550
    Par défaut
    Citation Envoyé par belfaigore Voir le message
    Merci Kelpan, j'avais cru constater ce phenomène, mais certaine propriété corresponde à des classes pour lesquelle on ne peut pas définir de valeur par défaut.
    Pas tout compris ?

    Il est tout de même important de savoir que

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <system.componentmodel.designerserializationvisibilityhidden(hidden)>_
    ne te permet pas de définir une valeur persistante dans le code d'initialisation pour une valeur différente de celle par défaut (exemple si tu définis une valeur autre que celle par défaut au moment du design)

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    135
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 135
    Par défaut
    Citation Envoyé par Kelpan Voir le message
    Pas tout compris ?
    Si tu crées deux class MaClass1 et MaClass2 et que dans MaClass1 tu as une propriété de type MaClass2, tu ne peux pas lui affecter de valeur par défaut ; ou le designer, au lieu de mettre la valeur par défaut mettra Nothing comme valeur de la propriété
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Public Class MaClass1
     
        'Propriété avec une valeur par défaut, mais non reprise dans un designer de VS2005
        Private _MaClass2 As New MaClass2("Toto")
        Public Property MaClass2 As MaClass2
            Get
                Return Me._MaClass2
            End Get
            Set(value As MaClass2)
                Me._MaClass2 = value
            End Set
        End Property    
     
    End Class
    Citation Envoyé par Kelpan Voir le message
    Il est tout de même important de savoir que

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <system.componentmodel.designerserializationvisibilityhidden(hidden)>_
    ne te permet pas de définir une valeur persistante dans le code d'initialisation pour une valeur différente de celle par défaut (exemple si tu définis une valeur autre que celle par défaut au moment du design)
    Existe-il une autre solution ? Comment sont fait les contrôles de la boite à outils ? toutes les propriétés d'un textbox par exemple ne sont pas reprises dans le designer, pourtant on peut malgrès tout les changer, et si celles-ci sont différentes de la valeur par défaut, alors elles sont ajoutées au designer.

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

Discussions similaires

  1. Probleme avec la copie des surfaces
    Par Black_Daimond dans le forum DirectX
    Réponses: 3
    Dernier message: 09/01/2003, 10h33
  2. Problèmes avec le filtrage des ip
    Par berry dans le forum Réseau
    Réponses: 9
    Dernier message: 30/12/2002, 07h51
  3. probleme avec la touche F10
    Par b.grellee dans le forum Langage
    Réponses: 2
    Dernier message: 15/09/2002, 22h04
  4. Probleme avec fseek
    Par Bjorn dans le forum C
    Réponses: 5
    Dernier message: 04/08/2002, 07h17
  5. [Kylix] probleme avec un imagelist
    Par NicoLinux dans le forum EDI
    Réponses: 4
    Dernier message: 08/06/2002, 23h06

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