PropertyGrid : Sélectionner une propriété avec un menu déroulant type ComboBox ? [Résolu]

lereparateurdepc 13 Messages postés dimanche 3 janvier 2010Date d'inscription 24 novembre 2012 Dernière intervention - 26 août 2011 à 18:31 - Dernière réponse : lereparateurdepc 13 Messages postés dimanche 3 janvier 2010Date d'inscription 24 novembre 2012 Dernière intervention
- 27 août 2011 à 11:23
Bonjour ,

Je viens de me lancer dans la création d'une DLL pour crée une InfoBar où il y a un UserControl avec deux PictureBox , un Label .

J'ai déjà ajouté toutes mes propriétées au PropertyGrid .
Le petit problème c'est que pour changer le style de mon InfoBar :
Error , Warning et Info ; il faut que je tape mannuellement le texte .
J'ai bien trouvé des codes , réussi ce que je voulais faire MAIS impossible de le placer dans mon code .
Voici le code de la partie InfoBar :
Imports System.ComponentModel
Public Class FP_InfoBar

    Dim vrInfoBgCl As String
    Dim vrImfoImg As String
    Private vrStyle As String = "Info"

    Private Sub InfoBar_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Me.Dock = System.Windows.Forms.DockStyle.Top
        Me.Height = 38


    End Sub
    
    <TypeConverter(GetType(InfoBarStyleParam)), _
    Category("Propriétées de l'InfoBar"), _
    Description("Selectionnez le style de l'InfoBar.")> _
    Public Property Style() As String
        Get
            Return vrStyle
        End Get
        Set(ByVal Value As String)
            vrStyle = Value
            Return
        End Set
    End Property

    ' Me.BackgroundImage = My.Resources.BrBlue
    ' Me.PictureBox1.Image = My.Resources.Icon_674

    ' Me.BackgroundImage = My.Resources.BrRouge
    ' Me.PictureBox1.Image = My.Resources.Icon_864

    ' Me.BackgroundImage = My.Resources.BrJaune
    ' Me.PictureBox1.Image = My.Resources.Icon_598

    'MsgBox("La valeure ''" & Value & "'' est n'est pas valide ." & Chr(13) & "Les valeures valides sont :" & Chr(13) & "Info" & Chr(13) & "Error" & Chr(13) & "Warning", 48, "Valeure éronée")


    <Description("Choisissez le texte"), _
Category("Propriétées de l'InfoBar")> _
    Property Message As String
        Get
            Return Me.Label1.Text
        End Get
        Set(ByVal Value As String)

            Me.Label1.Text = Value

        End Set
    End Property


    Private Sub PictureBox2_Click_1(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles PictureBox2.Click
        Me.Visible = False



    End Sub

    Private Sub InfoBar_VisibleChanged_1(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.VisibleChanged
        If Me.Visible = True Then
            Me.Height = 38
        End If
    End Sub




End Class


Public Class InfoBarStyleParam
    Inherits System.ComponentModel.StringConverter

    Private vrInfoBarStyle As String() = New String() { _
            "Info", "Error", "Warning"}


     Public Overloads Overrides Function GetStandardValues _
    (ByVal context As System.ComponentModel.ITypeDescriptorContext) _
     As System.ComponentModel.TypeConverter.StandardValuesCollection

     Return New StandardValuesCollection(vrInfoBarStyle)
     End Function


    Public Overloads Overrides Function GetStandardValuesExclusive _
        (ByVal context As System.ComponentModel.ITypeDescriptorContext) As Boolean

        Return True
    End Function


    Public Overloads Overrides Function GetStandardValuesSupported _
        (ByVal context As System.ComponentModel.ITypeDescriptorContext) As Boolean

        Return True
    End Function
End Class


L'image ci-dessous montre ce que je souhaite faire à ma propriété Style dans la catégorie Divers ( renommé depuis ) : Avoir un menu déroulant comme sur la propriété AutoScroll mais non pas avec True et False mais avec mes trois valeures : Info , Error , Warning .
L'image :


Merci de votre aide .
Je précise que les notion de VB / VB.NET , je les aient grâce au logiciel SoftwareZator Pro et un peut de copier / coller .
J'utilise Visual Basic 2010 express ( gratuit donc )

Cordialement ,
Le réparateur de PC
Afficher la suite 

Votre réponse

15 réponses

Meilleure réponse
NHenry 14250 Messages postés vendredi 14 mars 2003Date d'inscription 10 août 2018 Dernière intervention - 26 août 2011 à 19:30
3
Merci
Bonjour,

Regardes l'aide et tu verras.

Enum MonEnum
Valeur1
Valeur2
End Enum

Property MaProperty As Mon Enum

---------------------------------------------------------------------
[list=ordered][*]Pour poser correctement une question et optimiser vos chances d'obtenir des réponses, pensez à lire le règlement CS et aussi ce lien[*]Quand vous postez un code, merci d'utiliser la coloration syntaxique (3ième icône en partant de la droite : )
[*]Si votre problème est résolu (et uniquement si c'est le cas), pensez à mettre "Réponse acceptée" sur le ou les messages qui vous ont aidés./list
---

Merci NHenry 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 74 internautes ce mois-ci

Commenter la réponse de NHenry
NHenry 14250 Messages postés vendredi 14 mars 2003Date d'inscription 10 août 2018 Dernière intervention - 26 août 2011 à 18:40
0
Merci
Bonjour,

A la place d'un tableau de chaine, utilises une énumération et ça sera automatiquement géré.

---------------------------------------------------------------------
[list=ordered][*]Pour poser correctement une question et optimiser vos chances d'obtenir des réponses, pensez à lire le règlement CS et aussi ce lien[*]Quand vous postez un code, merci d'utiliser la coloration syntaxique (3ième icône en partant de la droite : )
[*]Si votre problème est résolu (et uniquement si c'est le cas), pensez à mettre "Réponse acceptée" sur le ou les messages qui vous ont aidés./list
---
Commenter la réponse de NHenry
lereparateurdepc 13 Messages postés dimanche 3 janvier 2010Date d'inscription 24 novembre 2012 Dernière intervention - 26 août 2011 à 18:50
0
Merci
re ,

Pouvez-vous m'expliquer le démarche ?
Je précise sur le code que j'ai mis , la partie PropertyGrid je l'ai récupérée sur un autre projet téléchargé .
Je n'ai que de très petites notions en VB du type
Me.TextBox1.Text = Me.TextBox2.Text
.....

Merci pour ces réponces rapides :)

Cordialement ,
Le réparateur de PC
Commenter la réponse de lereparateurdepc
NHenry 14250 Messages postés vendredi 14 mars 2003Date d'inscription 10 août 2018 Dernière intervention - 26 août 2011 à 18:54
0
Merci
Bonjour,

Tu déclare une énumération avec les 3 valeurs
Ensuite, tu définit le type de ta propriété avec cette énumération.

Mais ça sera une valeur numérique, il te faudra donc t'adapter pour la transformer en texte.

Essayes juste avec une variable sans utiliser une TextBox.

---------------------------------------------------------------------
[list=ordered][*]Pour poser correctement une question et optimiser vos chances d'obtenir des réponses, pensez à lire le règlement CS et aussi ce lien[*]Quand vous postez un code, merci d'utiliser la coloration syntaxique (3ième icône en partant de la droite : )
[*]Si votre problème est résolu (et uniquement si c'est le cas), pensez à mettre "Réponse acceptée" sur le ou les messages qui vous ont aidés./list
---
Commenter la réponse de NHenry
lereparateurdepc 13 Messages postés dimanche 3 janvier 2010Date d'inscription 24 novembre 2012 Dernière intervention - 26 août 2011 à 19:02
0
Merci
re ,

Pouvez-vous m'expliquer ce qu'est une énumération ?

Merci

Cordialement ,
Le réparateur de PC
Commenter la réponse de lereparateurdepc
NHenry 14250 Messages postés vendredi 14 mars 2003Date d'inscription 10 août 2018 Dernière intervention - 26 août 2011 à 19:07
0
Merci
Bonjour,

Mot clé Enum
c'est une représentation d'une valeur numérique avec un nom.

---------------------------------------------------------------------
[list=ordered][*]Pour poser correctement une question et optimiser vos chances d'obtenir des réponses, pensez à lire le règlement CS et aussi ce lien[*]Quand vous postez un code, merci d'utiliser la coloration syntaxique (3ième icône en partant de la droite : )
[*]Si votre problème est résolu (et uniquement si c'est le cas), pensez à mettre "Réponse acceptée" sur le ou les messages qui vous ont aidés./list
---
Commenter la réponse de NHenry
lereparateurdepc 13 Messages postés dimanche 3 janvier 2010Date d'inscription 24 novembre 2012 Dernière intervention - 26 août 2011 à 19:12
0
Merci
re ,

Pouvez-vous , si cela ne vous dérange pas , me mettre un bout de code comme exemple car là .... je ne vois pas ce qu'il faut mettre après le Enum .

Merci

Cordialement ,
Le réparateur de PC
Commenter la réponse de lereparateurdepc
lereparateurdepc 13 Messages postés dimanche 3 janvier 2010Date d'inscription 24 novembre 2012 Dernière intervention - 26 août 2011 à 20:20
0
Merci
re ,

AHHH , OK MAIS :

Enum
Info
Error
Warning
End Enum

Error semble poser problème , il ne passe pas ! Pourquois ?

Sinon , Merci j'ai réussi sur une dll de test ! :)
Public Class UserControl1
    Enum MonEnum
        Info
        Warning
        Erreur
    End Enum
    Dim vrStyleInfo
    Property MaProperty As MonEnum
        Get
            Return vrStyleInfo
        End Get
        Set(ByVal value As MonEnum)
            vrStyleInfo = value
            If value = 0 Then
                MsgBox("Info")
            ElseIf value = 1 Then
                MsgBox("Warning")
            ElseIf value = 2 Then
                MsgBox("Erreur")
            End If
        End Set
    End Property



End Class


Cordialement ,
Le réparateur de PC
Commenter la réponse de lereparateurdepc
NHenry 14250 Messages postés vendredi 14 mars 2003Date d'inscription 10 août 2018 Dernière intervention - 26 août 2011 à 20:53
0
Merci
Bonjour,

Pour reprendre ton code :
à la place de
If value = 0 Then
Préfères :
If value = MonEnum.Info Then
Plus clair dans le code

Evites aussi MsgBox, et préfères MessageBox.Show

De manière générale, évite l'import automatique de l'espace de nom Microsoft.VisualBasic (Propriétés du projet, onglet "Références), tu codera plus proprement et plus .NET aussi.

---------------------------------------------------------------------
[list=ordered][*]Pour poser correctement une question et optimiser vos chances d'obtenir des réponses, pensez à lire le règlement CS et aussi ce lien[*]Quand vous postez un code, merci d'utiliser la coloration syntaxique (3ième icône en partant de la droite : )
[*]Si votre problème est résolu (et uniquement si c'est le cas), pensez à mettre "Réponse acceptée" sur le ou les messages qui vous ont aidés./list
---
Commenter la réponse de NHenry
lereparateurdepc 13 Messages postés dimanche 3 janvier 2010Date d'inscription 24 novembre 2012 Dernière intervention - 26 août 2011 à 21:02
0
Merci
re ,

Merci :)

Ma dll est :
FrançoisProductionToolsKit.dll

Merci !!!!

PS : il est où le résolu ?

Cordialement ,
Le réparateur de PC
Commenter la réponse de lereparateurdepc
Utilisateur anonyme - 26 août 2011 à 21:14
0
Merci
Erreur 404

La page demmandée n'existe pas . Si vous avez sasie l'adresse manuellement , merci de vérifier son exactitude .
Commenter la réponse de Utilisateur anonyme
NHenry 14250 Messages postés vendredi 14 mars 2003Date d'inscription 10 août 2018 Dernière intervention - 26 août 2011 à 21:15
0
Merci
Bonjour,

C'est le "Réponse acceptée" à gauche du message :)

---------------------------------------------------------------------
[list=ordered][*]Pour poser correctement une question et optimiser vos chances d'obtenir des réponses, pensez à lire le règlement CS et aussi ce lien[*]Quand vous postez un code, merci d'utiliser la coloration syntaxique (3ième icône en partant de la droite : )
[*]Si votre problème est résolu (et uniquement si c'est le cas), pensez à mettre "Réponse acceptée" sur le ou les messages qui vous ont aidés./list
---
Commenter la réponse de NHenry
lereparateurdepc 13 Messages postés dimanche 3 janvier 2010Date d'inscription 24 novembre 2012 Dernière intervention - 27 août 2011 à 08:12
0
Merci
re ,

AHH , j'ai testé le lien suste après le poste du message et il est fonctionnel .

Je viens de tester et il est toujours fonctionnel .
Le lien non cliquable est :
http://lereparateurdepc.olympe-network.com/sz_tmp/FrançoisProductionToolsKit.dll

Pour la "Réponce acceptée " ce que j'ai fait est donc bon :)

Cordialement ,
Le réparateur de PC
Commenter la réponse de lereparateurdepc
Utilisateur anonyme - 27 août 2011 à 10:29
0
Merci
Bonjour,
C'est la cédille dans le nom de ta dll qui passe pas.
A+
Commenter la réponse de Utilisateur anonyme
lereparateurdepc 13 Messages postés dimanche 3 janvier 2010Date d'inscription 24 novembre 2012 Dernière intervention - 27 août 2011 à 11:23
0
Merci
re ,

Moi sous IE9 , ça marche mais en effet sous Firefox non .

Le lien est :
FrancoisProductionToolsKit.dll

Désolé du désagrément .

Cordialement ,
Le réparateur de PC
Commenter la réponse de lereparateurdepc

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.