CustomTextBox avec borderColor
Bonjour,
Toujours pour m'exercer dans mon apprentissage sur les classes, je me suis donné comme exercice la création d'un textbox personnalisé avec une bordure lorsque le contrôle prend le focus.
J'ia donc besoin de l'event OnGotFocus pour déclencher l'événement.
Mais pour dessiner le rectangle correspondant à la bordure, je n'ai pas trouvé d'autre moyen que d'utiliser l'event OnPaint.
Le pb est d'appeler le OnPaint depuis l'event OnGotFocus.
Voici le code :
Code:
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
| Imports System.ComponentModel
Public Class CustomTextBox
Inherits System.Windows.Forms.TextBox
Private _GotFocus As Boolean
Private _BorderColor As Color = Color.Red
Private _BorderWidth As SByte = 1
<Browsable(True), Category("Apparence")> _
Public Property BorderColor() As Color
Get
Return _BorderColor
End Get
Set(ByVal value As Color)
_BorderColor = value
End Set
End Property
<Browsable(True), Category("Apparence")> _
Public Property BorderWidth() As SByte
Get
Return _BorderWidth
End Get
Set(ByVal value As SByte)
_BorderWidth = value
End Set
End Property
Protected Overrides Sub OnPaint(ByVal e As System.Windows.Forms.PaintEventArgs)
MyBase.OnPaint(e)
MyBase.BorderStyle = Windows.Forms.BorderStyle.FixedSingle
If _GotFocus Then
Dim mypen As Pen
mypen = New Pen(_BorderColor, _BorderWidth)
e.Graphics.DrawRectangle(mypen, _BorderWidth, _BorderWidth, Me.Width - 2 * _BorderWidth, Me.Height - 2 * _BorderWidth)
End If
End Sub
Protected Overrides Sub OnGotFocus(ByVal e As System.EventArgs)
MyBase.OnGotFocus(e)
_GotFocus = True
'... ici : comment appeler OnPaint ???
End Sub
Protected Overrides Sub OnLostFocus(ByVal e As System.EventArgs)
MyBase.OnLostFocus(e)
_GotFocus = False
End Sub
End Class |
D'abord : La "philosophie" est-elle la bonne ?
Si oui, comment appeler la procédure OnPaint depuis OnGotFocus.
J'espère que cet exemple est aussi simple que je l'imagine, sinon merci de me le dire, je passerais à un exercice plus facile !!