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 :

Ajout de "marge" dans un TextBox


Sujet :

VB.NET

  1. #1
    Membre régulier
    Homme Profil pro
    Inscrit en
    Septembre 2012
    Messages
    166
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2012
    Messages : 166
    Points : 86
    Points
    86
    Par défaut Ajout de "marge" dans un TextBox
    Bonjour,
    je souhaiterai ajouter une marge (gauche) au texte d'un textbox ou richtextbox.
    J'ai déjà regardé dans les props, mais il ne semble pas y avoir qlq chose du style :
    TextLeftMargin = 5, par exemple.
    Je ne parle pas de la marge du composant, je parle bien d'une marge intérieur pour le texte, car la 1ere lettre collée sur la gauche, c'est pas très joli
    Une idée ?
    Évidemment, il y a : créer un panel, et mettre un textbox de la même couleur, dedans, mais c'est un peu trop, non ?

    Patrick

  2. #2
    Expert confirmé
    Avatar de Kropernic
    Homme Profil pro
    Analyste / Programmeur / DBA
    Inscrit en
    Juillet 2006
    Messages
    3 932
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Belgique

    Informations professionnelles :
    Activité : Analyste / Programmeur / DBA
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 932
    Points : 4 239
    Points
    4 239
    Par défaut
    Regarde du côté des propriétés Margin ou Padding. Je confonds toujours les deux. L'une est pour l'intérieur et l'autre pour l'extérieur du contrôle. Et vu que tu peux définir séparément les valeurs pour les 4 côtés, ça devrait faire ton bonheur.
    Kropernic

  3. #3
    Membre régulier
    Homme Profil pro
    Inscrit en
    Septembre 2012
    Messages
    166
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2012
    Messages : 166
    Points : 86
    Points
    86
    Par défaut
    Bonjour Kropernic,
    le Margin sert aux espacement entre controls voisins.
    Le Padding est une marge interne, mais pour un container de controls, genre un panel par rapport à ses bords interne et les autres composant qui y sont contenus.
    Pas de Padding pour une boite texte Cela aurait pu être la soluce.

    En effet, faudrait un Padding pour le texte à l'interieur de la textbox.

    Patrick

  4. #4
    Expert confirmé
    Avatar de Kropernic
    Homme Profil pro
    Analyste / Programmeur / DBA
    Inscrit en
    Juillet 2006
    Messages
    3 932
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Belgique

    Informations professionnelles :
    Activité : Analyste / Programmeur / DBA
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 932
    Points : 4 239
    Points
    4 239
    Par défaut
    Ah zut...

    Mais t'as vraiment besoin d'une marge supplémentaire ? Dans mes textbox, le texte n'est pas du tout collé au bord gauche. Doit bien y avoir 2 ou 3 pixels...

    EDIT : C'est marrant, l'espace est moins grand avec les minuscules qu'avec les majuscules (et j'ai testé avec le M histoire d'avoir un bord droit)
    Kropernic

  5. #5
    Membre régulier
    Homme Profil pro
    Inscrit en
    Septembre 2012
    Messages
    166
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2012
    Messages : 166
    Points : 86
    Points
    86
    Par défaut
    J'utilise les textbox et autre boutons en BorderStyle=none, donc le texte est super collé sur le bord.
    Seul moyen est d'être en BorderStyle=FixedSingle.

    Sinon, je viens de trouver cela :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    TextBox1.Text = TextBox1.Text.PadLeft(30)
    Mais ça ajoute des espace devant le text, donc si on fait un copié/collé de la txtbox, on se retrouve avec des espace en plus... la loose

    Patrick

  6. #6
    Expert confirmé
    Avatar de Kropernic
    Homme Profil pro
    Analyste / Programmeur / DBA
    Inscrit en
    Juillet 2006
    Messages
    3 932
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Belgique

    Informations professionnelles :
    Activité : Analyste / Programmeur / DBA
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 932
    Points : 4 239
    Points
    4 239
    Par défaut
    Ouais c'est ce que j'allais dire... Tu peux ajouter des espaces mais bon et faire un trim au moment de mettre dans le clipboard mais bon... C'est moche... A mon avis, va falloir passer par un contrôle custom pour ça je crois...

    T'as rien trouvé de tout fait sur le net ?
    Kropernic

  7. #7
    Membre régulier
    Homme Profil pro
    Inscrit en
    Septembre 2012
    Messages
    166
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2012
    Messages : 166
    Points : 86
    Points
    86
    Par défaut
    Non, rien trouvé de concret.
    Pour l'ajout d'espace (PadLeft), c'est pas beau car avec une tbox en multiligne, voila la galère si tu veux copier le contenu.
    Bon, je me débrouille avec le BorderStyle=FixedSingle, ça me donne un tout petit peu de marge et je reste dans le design (plat).
    Merci pour ton aide.
    Patrick

  8. #8
    Expert confirmé
    Avatar de Kropernic
    Homme Profil pro
    Analyste / Programmeur / DBA
    Inscrit en
    Juillet 2006
    Messages
    3 932
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Belgique

    Informations professionnelles :
    Activité : Analyste / Programmeur / DBA
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 932
    Points : 4 239
    Points
    4 239
    Par défaut
    Suis en train de me créer un petit framework de contrôle custom. Du coup, je teste cette histoire de marge. Si j'arrive à qqch de probant, je posterai le résultat.
    Kropernic

  9. #9
    Expert confirmé
    Avatar de Kropernic
    Homme Profil pro
    Analyste / Programmeur / DBA
    Inscrit en
    Juillet 2006
    Messages
    3 932
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Belgique

    Informations professionnelles :
    Activité : Analyste / Programmeur / DBA
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 932
    Points : 4 239
    Points
    4 239
    Par défaut A terminer
    Hello,

    C'est à terminer mais avec un truc dans ce genre-ci (voir code ci-dessous), tu peux arriver à tes fins.

    J'ai en fait créé un UserControl dans lequel j'ai un TextBox sans bordure. Une propriété InnerLeftMargin qui stocke le nombre de pixel de la marge et on va modifier la place du TextBox avec cette valeur.

    Plus qu'à modifier la couleur de fond du UserControl pour avoir le même histoire de ne pas voir de différence et voilà.

    Après, reste plus qu'à exposer à travers ce nouveau UserControl toutes les propriétés, méthodes et évènement du TextBox.

    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
    Imports System.Windows.Forms
    Public Class MargedTextBox
        Inherits UserControl
     
        Friend WithEvents TextBox1 As TextBox
     
        Private _innerLeftMargin As Integer
        Public Property InnerLeftMargin As Integer
            Get
                Return _innerLeftMargin
            End Get
            Set(value As Integer)
                _innerLeftMargin = value
                TextBox1.Location = New Drawing.Point(value, 0)
            End Set
        End Property
     
        Public Sub New()
            InitializeComponent()
     
            InnerLeftMargin = 0
            Me.BackColor = TextBox1.BackColor
        End Sub
     
        Private Sub InitializeComponent()
            Me.TextBox1 = New System.Windows.Forms.TextBox()
            Me.SuspendLayout()
            '
            'TextBox1
            '
            Me.TextBox1.BorderStyle = System.Windows.Forms.BorderStyle.None
            Me.TextBox1.Location = New System.Drawing.Point(0, 0)
            Me.TextBox1.Margin = New System.Windows.Forms.Padding(0)
            Me.TextBox1.Name = "TextBox1"
            Me.TextBox1.Size = New System.Drawing.Size(100, 13)
            Me.TextBox1.TabIndex = 0
            '
            'MargedTextBox
            '
            Me.AutoSize = True
            Me.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink
            Me.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle
            Me.Controls.Add(Me.TextBox1)
            Me.Name = "MargedTextBox"
            Me.Size = New System.Drawing.Size(100, 13)
            Me.ResumeLayout(False)
            Me.PerformLayout()
     
        End Sub
    End Class
    N.B. : Par contre, je pense qu'il doit y avoir plus simple.
    Kropernic

  10. #10
    Expert confirmé
    Avatar de wallace1
    Homme Profil pro
    Administrateur systèmes
    Inscrit en
    Octobre 2008
    Messages
    1 966
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Administrateur systèmes
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 966
    Points : 4 005
    Points
    4 005
    Billets dans le blog
    7
    Par défaut
    Bonsoir,

    Il y a aussi cette possibilité :

    c-sharp-textbox-padding


  11. #11
    Membre régulier
    Homme Profil pro
    Inscrit en
    Septembre 2012
    Messages
    166
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2012
    Messages : 166
    Points : 86
    Points
    86
    Par défaut
    Merci à Kropernic et wallace1
    @Kropernic, je vais intégrer ton code dans mon appli.
    Merci encore.
    Patrick

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

Discussions similaires

  1. QGIS : lenteur pour afficher les listes des vues dans "Ajouter une table PostGIS"
    Par fafa63 dans le forum SIG : Système d'information Géographique
    Réponses: 2
    Dernier message: 11/07/2014, 19h04
  2. ajout d'un imprim ecran dans un textbox
    Par hokidoki dans le forum Général Dotnet
    Réponses: 2
    Dernier message: 10/07/2007, 13h23

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