Utilisation d'un type enum pour créer les choix d'une fenêtre de dialogue

Soyez le premier à donner votre avis sur cette source.

Snippet vu 15 673 fois - Téléchargée 29 fois

Contenu du snippet

Il suffit d'instancier frmMsgBoxEnum en passant en paramétre la question et le type Enum qui contient toutes les réponses possibles.
Les "_" dans le type Enum sont remplacés par des " " dans le label du checkbox.

Source / Exemple :


Namespace myForms

    Public Class frmMsgBoxEnum
        Inherits System.Windows.Forms.Form

#Region " Code généré par le Concepteur Windows Form "

        Private Const CtWidth = 210
        Private Const CtEnumSize = 30

        Public Enum test
            Toto
            tata
            titi
            tutu
            tyty
        End Enum

        Private myEnumType As Type
        Private myValue As String

        Public Sub New(ByVal enumType As Type, ByVal question As String)
            '    Public Sub New()
            MyBase.New()

            'Cet appel est requis par le Concepteur Windows Form.
            InitializeComponent()

            'Ajoutez une initialisation quelconque après l'appel InitializeComponent()
            Me.myEnumType = enumType
            CreateCkb(Me.myEnumType)
            Me.lblInfo.Text = question

        End Sub

        'La méthode substituée Dispose du formulaire pour nettoyer la liste des composants.
        Protected Overloads Overrides Sub Dispose(ByVal disposing As Boolean)
            If disposing Then
                If Not (components Is Nothing) Then
                    components.Dispose()
                End If
            End If
            MyBase.Dispose(disposing)
        End Sub

        'Requis par le Concepteur Windows Form
        Private components As System.ComponentModel.IContainer

        'REMARQUE : la procédure suivante est requise par le Concepteur Windows Form
        'Elle peut être modifiée en utilisant le Concepteur Windows Form.  
        'Ne la modifiez pas en utilisant l'éditeur de code.
        Friend WithEvents btnOK As System.Windows.Forms.Button
        Friend WithEvents lblInfo As System.Windows.Forms.Label
        Friend WithEvents gbxEnum As System.Windows.Forms.GroupBox
        <System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent()
            Me.btnOK = New System.Windows.Forms.Button
            Me.lblInfo = New System.Windows.Forms.Label
            Me.gbxEnum = New System.Windows.Forms.GroupBox
            Me.SuspendLayout()
            '
            'btnOK
            '
            Me.btnOK.FlatStyle = System.Windows.Forms.FlatStyle.System
            Me.btnOK.Location = New System.Drawing.Point(78, 232)
            Me.btnOK.Name = "btnOK"
            Me.btnOK.TabIndex = 0
            Me.btnOK.Text = "OK"
            '
            'lblInfo
            '
            Me.lblInfo.Location = New System.Drawing.Point(8, 8)
            Me.lblInfo.Name = "lblInfo"
            Me.lblInfo.Size = New System.Drawing.Size(210, 50)
            Me.lblInfo.TabIndex = 1
            Me.lblInfo.Text = "..."
            Me.lblInfo.TextAlign = System.Drawing.ContentAlignment.MiddleCenter
            '
            'gbxEnum
            '
            Me.gbxEnum.Location = New System.Drawing.Point(10, 60)
            Me.gbxEnum.Name = "gbxEnum"
            Me.gbxEnum.Size = New System.Drawing.Size(210, 150)
            Me.gbxEnum.TabIndex = 2
            Me.gbxEnum.TabStop = False
            '
            'frmMsgBoxEnum
            '
            Me.AutoScaleBaseSize = New System.Drawing.Size(5, 13)
            Me.ClientSize = New System.Drawing.Size(230, 262)
            Me.ControlBox = False
            Me.Controls.Add(Me.gbxEnum)
            Me.Controls.Add(Me.lblInfo)
            Me.Controls.Add(Me.btnOK)
            Me.FormBorderStyle = System.Windows.Forms.FormBorderStyle.Fixed3D
            Me.MaximizeBox = False
            Me.MinimizeBox = False
            Me.Name = "frmMsgBoxEnum"
            Me.SizeGripStyle = System.Windows.Forms.SizeGripStyle.Hide
            Me.Text = "Question ?"
            Me.ResumeLayout(False)

        End Sub

#End Region

'Création des choix
        Private Sub CreateCkb(ByVal anEnumType As Type)
            Me.SuspendLayout()

            Dim ckbArray As System.Array = System.Enum.GetValues(anEnumType)
            Dim x As Int16 = 0
            Dim first As Boolean = True

            Me.gbxEnum.Size = New System.Drawing.Size(CtWidth, CtEnumSize * ckbArray.Length + 10)
            Me.btnOK.Location = New System.Drawing.Point(Me.gbxEnum.Size.Width / 2 - Me.btnOK.Size.Width / 2, Me.gbxEnum.Size.Height + Me.lblInfo.Size.Height + 20)
            Me.Size = New System.Drawing.Size(Me.gbxEnum.Size.Width + 30, Me.lblInfo.Size.Height + Me.gbxEnum.Size.Height + Me.btnOK.Size.Height + 75)
            Me.gbxEnum.Location = New System.Drawing.Point((Me.Size.Width - Me.gbxEnum.Size.Width) / 2, Me.lblInfo.Size.Height + 10)

            For Each ckb As Object In ckbArray
                Dim checkBox As New Windows.Forms.RadioButton
                If first Then
                    checkBox.Checked = True
                    first = False
                End If
                checkBox.Name = ckb.ToString.Replace("_", " ")
                checkBox.FlatStyle = FlatStyle.System
                checkBox.Text = ckb.ToString.Replace("_", " ")
                checkBox.Size = New System.Drawing.Size(Me.gbxEnum.Size.Width - 20, 20)
                checkBox.Location = New System.Drawing.Point(10, CtEnumSize * x + 10)
                x = x + 1
                Me.gbxEnum.Controls.Add(checkBox)
            Next

            Me.ResumeLayout(False)

        End Sub

        Private Function GetRadioButtonValue() As String
            Dim rb As New Windows.Forms.RadioButton

            For Each rb In Me.gbxEnum.Controls
                If rb.Checked Then
                    Return rb.Text.Replace(" ", "_")
                End If
            Next
            Return String.Empty
        End Function

'Récupération du choix
        Public Function GetMsgBoxValue() As Object
            Me.ShowDialog()
            Return System.Enum.Parse(Me.myEnumType, GetRadioButtonValue)
        End Function

        Private Sub btnOK_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnOK.Click
            Me.Close()
        End Sub
    End Class
End Namespace

A voir également

Ajouter un commentaire

Commentaires

Messages postés
3
Date d'inscription
samedi 1 mars 2008
Statut
Membre
Dernière intervention
7 mars 2008

avec le zip
Messages postés
3
Date d'inscription
samedi 1 mars 2008
Statut
Membre
Dernière intervention
7 mars 2008

merci pour le code mais moi aussi je pense que ca sera mieux avec le code et merci une autre fois
Messages postés
104
Date d'inscription
jeudi 6 mai 2004
Statut
Membre
Dernière intervention
31 décembre 2006

Ouais pas cool de pas mettre de zip!
Messages postés
467
Date d'inscription
lundi 24 juin 2002
Statut
Membre
Dernière intervention
9 mars 2011

tu peux tout de meme laisser le code comme sa mais bon avec un zip je trouve sa lus convivial !
Messages postés
467
Date d'inscription
lundi 24 juin 2002
Statut
Membre
Dernière intervention
9 mars 2011

tu crois pas que tu devrais mettre un zip non ??
paske la j'aurai bien tester ton code mais bon le cc c'est pas mon truc ! avec toutes les erreur que cela implique!
Sinon bonne continuation en vb.net

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.