Label et image dans textbox

Contenu du snippet

une petite classe qui améliore la TextBox
on ajoute un background label et une background picture
qui disparait quand la textbox a le focus
et qui réaparait seulement quand TextBox.Text=String.Empty

Source / Exemple :


' post original by Zijian
'http://www.codeproject.com/KB/miscctrl/Parasite_Pattern2.aspx
'revision par gillardg
'traduction en vb.net et ajout d'une propriété image
Public Class InTextboxLabel

    Protected box As TextBoxBase
    Protected hint As String
    Protected lab As Label
    ''' <summary>
    ''' usage :
    ''' dans l'évenement Load de la form ( MyBase.Load )
    ''' Dim tex As New InTextboxLabel(tb1, "User Name", Image.FromFile("annsom.png"))
    ''' </summary>
    ''' <param name="box"></param>
    ''' <param name="hint"></param>
    ''' <param name="picture"></param>
    ''' <remarks></remarks>
    Public Sub New(ByVal box As TextBoxBase, ByVal hint As String, Optional ByVal picture As Image = Nothing)
        Me.box = box
        Me.hint = hint

        AddHandler box.Enter, AddressOf box_Enter
        AddHandler box.Leave, AddressOf box_Leave
        AddHandler box.TextChanged, AddressOf box_TextChanged

        lab = New Label()
        lab.Text = hint

        lab.Image = picture
        lab.ForeColor = SystemColors.ActiveBorder
        box.Controls.Add(lab)
        lab.Dock = DockStyle.Fill
        AddHandler lab.Click, AddressOf panel_Click

        If String.IsNullOrEmpty(box.Text) Then
            lab.Show()
        End If
    End Sub

    Private Sub box_TextChanged(ByVal sender As Object, ByVal e As EventArgs)
        If (Not String.IsNullOrEmpty(box.Text)) Then
            lab.Hide()
        ElseIf (Not box.Focused) Then
            lab.Show()
        End If
    End Sub

    Private Sub panel_Click(ByVal sender As Object, ByVal e As EventArgs)
        lab.Hide()
        box.Select()
    End Sub

    Private Sub box_Leave(ByVal sender As Object, ByVal e As EventArgs)
        If String.IsNullOrEmpty(box.Text) Then
            lab.Show()
        End If
    End Sub

    Private Sub box_Enter(ByVal sender As Object, ByVal e As EventArgs)
        lab.Hide()
    End Sub
End Class

Conclusion :


ça fait longtemps que j'avais pas posté

question souvent posée, voila une réponse

A voir également

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.