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 :

traiter un caractère dans un label


Sujet :

VB.NET

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Avril 2010
    Messages : 7
    Par défaut traiter un caractère dans un label
    Bonjour,

    Je suis entrain de créer un formulaire avec visual studio 2008 avec des labels qui auront par exemple * Nom, * Prénom, etc. Ce qui me pose problème c'est " * " j'aimerai lui mettre une couleur rouge pour indiquer à l'utilisateur que ce champs doit être obligatoire à la saisie.

    En effet, j'ai essayé de travailler avec qui retourne la premier valeur du texte écrit dans le label. Mais, je reste bloqué pour savoir comment traité cette valeur et lui changé de couleur sans touché le reste du texte.

    Qqun pourrai m'aider à résoudre ce problème ??
    Merci

  2. #2
    Membre Expert
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    826
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juin 2006
    Messages : 826
    Par défaut
    Salut,

    Le formatage s'applique à tout le texte du label. Il n'est donc pas possible de spécifier une mise en forme pour une partie.
    Si tu souhaites tout de même continuer dans cette voie, une solution est de faire un contrôle composite avec 2 labels : un en rouge pour l'étoile et l'autre pour le libellé.

  3. #3
    Membre très actif
    Avatar de charouel
    Homme Profil pro
    Freelance
    Inscrit en
    Mars 2009
    Messages
    618
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2009
    Messages : 618
    Billets dans le blog
    9
    Par défaut
    tu peut faire deux label
    un pour mettre "*"
    Deux pour mettre le "nom" par exemple
    et tu change le propriété du premier pour changer le couleur

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Avril 2010
    Messages : 7
    Par défaut
    Merci,

    C'est sur que la solution la plus facile serait de faire deux label un pour "*" et l'autre pour le texte.

    Mais j'aimerai appliquer la méthode du contrôle composite avec deux labels. Cybermaxs pourrais tu m'aider dans cette démarche??

  5. #5
    Membre Expert
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    826
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juin 2006
    Messages : 826
    Par défaut
    Citation Envoyé par Ecuarm Voir le message
    Cybermaxs pourrais tu m'aider dans cette démarche??
    L'idée est de faire un UserControl réutilisable dans ton application. La constitution du UserControl ne doit pas poser de problème. La seule question est de savoir si tu y mets simplement 2 labels ou 2 labels plus un textbox pour avoir un contrôle de saisie plus général. Une autre idée est d'ajouter des propriétés pour configurer au mieux de contrôle comme par exemple IsRequired afin de gérer en interne l'apparition ou non de *.

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Avril 2010
    Messages : 7
    Par défaut
    Merci pour vos réponse cette petite difficulté

  7. #7
    Membre chevronné Avatar de blade159
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2004
    Messages
    226
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mars 2004
    Messages : 226
    Par défaut
    regarde de ce côté là

    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
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
     
    Imports System.Windows.Forms
    Imports System.ComponentModel
    Imports System.Drawing.Drawing2D
     
    Public Class monLabel
        Inherits Label
     
    #Region " - CONSTRUCTEUR - "
     
        Public Sub New()
            ' Cet appel est requis par le Concepteur Windows Form.
            InitializeComponent()
            _highLightLongueur = 1
            _highLightDebut = HighLightDebut.Gauche
            _highLightcouleur = Color.Red
        End Sub
     
        'UserControl remplace la méthode Dispose pour nettoyer la liste des composants.
        <System.Diagnostics.DebuggerNonUserCode()> _
        Protected Overrides Sub Dispose(ByVal disposing As Boolean)
            Try
                If disposing AndAlso components IsNot Nothing Then
                    components.Dispose()
                End If
            Finally
                MyBase.Dispose(disposing)
            End Try
        End Sub
     
        'Requise 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 à l'aide du Concepteur Windows Form.  
        'Ne la modifiez pas à l'aide de l'éditeur de code.
        <System.Diagnostics.DebuggerStepThrough()> _
        Private Sub InitializeComponent()
            components = New System.ComponentModel.Container
        End Sub
     
    #End Region
     
    #Region " - VARIABLES LOCALES - "
        Private _highLightcouleur As Color = Color.Red
        Private _highLightDebut As HighLightDebut = HighLightDebut.Gauche
        Private _highLightLongueur As Integer = 1
    #End Region
     
    #Region " - ENUM - "
        Enum HighLightDebut
            Gauche
            Droite
        End Enum
    #End Region
     
    #Region " - PROPRIETES - "
     
        <Description("Définit la couleur des caractères à mettre en valeur")> _
        <DefaultValue(GetType(Color), "Red")> _
        Public Property HighLightCouleur() As Color
            Get
                Return _highLightcouleur
            End Get
            Set(ByVal value As Color)
                _highLightcouleur = value
            End Set
        End Property
     
        <Description("Définit le côté des caractères à mettre en valeur")> _
        <DefaultValue(GetType(HighLightDebut), "Gauche")> _
        Public Property HighLightPosition() As HighLightDebut
            Get
                Return _highLightDebut
            End Get
            Set(ByVal value As HighLightDebut)
                _highLightDebut = value
            End Set
        End Property
     
        <Description("Définit le nombre de caractères à mettre en valeur")> _
        <DefaultValue(GetType(Integer), "1")> _
        Public Property HighLightLongueur() As Integer
            Get
                Return _highLightLongueur
            End Get
            Set(ByVal value As Integer)
                If ((value > Me.Text.Length) And (Me.Text.Length <> 0)) Then
                    _highLightLongueur = Me.Text.Length
                Else
                    _highLightLongueur = value
                End If
            End Set
        End Property
    #End Region
     
    #Region " - METHODES - "
        ''' <summary>
        ''' 
        ''' </summary>
        ''' <param name="e">PaintEventArgs</param>
        ''' <remarks>Override la méthode OnPaint</remarks>
        Protected Overrides Sub OnPaint(ByVal e As System.Windows.Forms.PaintEventArgs)
            Dim Partie1 As String
            Dim Partie2 As String
            If (Me.HighLightPosition = HighLightDebut.Gauche) Then
                Partie1 = Me.Text.Substring(0, Me.HighLightLongueur)
                Partie2 = Me.Text.Substring(Me.HighLightLongueur)
            Else
                Partie1 = Me.Text.Substring(0, Me.Text.Length - Me.HighLightLongueur)
                Partie2 = Me.Text.Substring(Me.Text.Length - Me.HighLightLongueur)
            End If
     
            Dim Brush1 As New SolidBrush(Me.HighLightCouleur)
            Dim Brush2 As New SolidBrush(Me.ForeColor)
     
            Dim objTextSize1 As SizeF = New SizeF(TextRenderer.MeasureText(e.Graphics, Partie1, Me.Font, Size.Empty, TextFormatFlags.Default))
            Dim objTextSize2 As SizeF = New SizeF(TextRenderer.MeasureText(e.Graphics, Partie2, Me.Font, Size.Empty, TextFormatFlags.Default))
            Dim objTextPosition1 As PointF = New PointF(0, (Me.Height - objTextSize1.Height) / 2)
            Dim objTextPosition2 As PointF = New PointF(TextRenderer.MeasureText(e.Graphics, Partie1 + Partie1, Me.Font, Size.Empty, TextFormatFlags.Default).Width - TextRenderer.MeasureText(e.Graphics, Partie1, Me.Font, Size.Empty, TextFormatFlags.Default).Width, (Me.Height - objTextSize2.Height) / 2)
     
            If (Me.HighLightPosition = HighLightDebut.Gauche) Then
                e.Graphics.DrawString(Partie1, Me.Font, Brush1, objTextPosition1)
                e.Graphics.DrawString(Partie2, Me.Font, Brush2, objTextPosition2)
            Else
                e.Graphics.DrawString(Partie1, Me.Font, Brush2, objTextPosition1)
                e.Graphics.DrawString(Partie2, Me.Font, Brush1, objTextPosition2)
            End If
     
        End Sub
     
    #End Region
     
    End Class
    en utilisant les 3 propriétés suivantes :

    • HighLightCouleur() ;
    • HighLightPosition() ;
    • HighLightLongueur() .

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

Discussions similaires

  1. Limiter le nombre de caractères dans un label
    Par Liloo14 dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 21/05/2013, 23h24
  2. Insérer des caractères spéciaux dans le label d'une variable
    Par Fabien G. dans le forum ODS et reporting
    Réponses: 6
    Dernier message: 09/04/2013, 16h47
  3. Caractères grecs dans les labels des axes
    Par paul_fbm dans le forum MATLAB
    Réponses: 10
    Dernier message: 06/11/2009, 12h21
  4. Réponses: 3
    Dernier message: 02/09/2008, 12h54
  5. Réponses: 3
    Dernier message: 09/05/2002, 02h39

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