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 |