Ecrire dans RichTextBox à deux positions différentes sur une même ligne

Signaler
Messages postés
8
Date d'inscription
mardi 2 mars 2004
Statut
Membre
Dernière intervention
14 septembre 2008
-
Messages postés
6351
Date d'inscription
samedi 1 juin 2002
Statut
Modérateur
Dernière intervention
2 août 2014
-
Je vous salut,

Je suis présentement en train d'essayer décrire des informations dans Richtexbox mais j'arrive pas a les présenter sous forme de colonne, je m'explique :

0 20
Nom: Marley
Prenom: Bob
Pays Jamaique

Quelqu'1 a une idée?

5 réponses

Messages postés
4936
Date d'inscription
lundi 17 février 2003
Statut
Modérateur
Dernière intervention
14 février 2014
36
as-tu essayé en mettant des tabulations ?

0\t\t20
Nom:\t\tMarley

donne :
0 20
Nom: Marley

Sébastien FERRAND
[MVP C#]
Messages postés
8
Date d'inscription
mardi 2 mars 2004
Statut
Membre
Dernière intervention
14 septembre 2008

Merci Sébatien pour ton intervention,
j'ai essayé ton exemple mais quand les données sont affichées le chiffre 0 ou 20 le sont aussi


string
l1 = "Nom:";


string l2 = "Marley",l3;




l3 = "0\t\t20" + l1 + "\t\t" + l2;


rtb.AppendText(l3);


Resultat:
0 20Nom: Marley

qui est différent de
0 20
Nom: Marley

Mais j'ai pas envie que les chiffres soitr affichés. Je ne sais pas ce que je fais d'incorrect? As-tu une idée.

Par la même occasion j'explique mon problème: j'utilise le RichTextbox pour afficher des informations qui doivent être imprimer à partir d'un guichet électronique. Comme l'écra du guchet n'est pas si grand je dois vraiment jouer avec la position des caractères à l'écran et sur papier. Je ne sais pas s'il y a un autre control qui me permet de faire cela à part le RichTexbox.
Merci Bien.

BobAlex
Messages postés
6351
Date d'inscription
samedi 1 juin 2002
Statut
Modérateur
Dernière intervention
2 août 2014
92
Il suffisait que tu ajoutes un retour à la ligne...

Sinon pour effectuer ton alignement tu as juste à te concocter une petite méthode utilaitaire pour toi ajouter autant d'espaces qu'il le faut à la fin de ta chaine :

Exemple :
private static string AppendSpaces(string src, int newStrLength)
{
StringBuilder sb = new StringBuilder(newStrLength);
sb.Append(src);
for(int i=0; i<newStrLength-src.Length; i++)
{
sb.Append(' ');
}
return sb.ToString();
}

Utilisation :
string l1 = "Nom:";
string l2 = "Marley";
string l3 = string.Concat(AppendSpaces(l1, 19), l2, Environment.NewLine)
rtb.AppendText(l3);

/*
coq
MVP Visual C#
*/
Messages postés
8
Date d'inscription
mardi 2 mars 2004
Statut
Membre
Dernière intervention
14 septembre 2008

Merci pour ton intervention Coq,


Mais je l'avais déjà utilisé la methode String.PadRight bien avant ta methode, mais ça ne donne pas de résultats satisfaisants, prenons l'exemple suivant:


WWWWWWWWWW *


IIIIIII *


Alors tu as la chaine de 10 W et 10 espace et * se situe à la 21 positions, il en est de même pour la chaine2 de 10 I et 10 espace. Mais quand tu regardes tu vois très bien que les deux * ne sont pas allignés verticalement, ils sont tous à la POSITION 21, mais ils ne sont pas à la COLONNE 21 (si je peux m'exprimer de cette manière).

En faite je ne suis pas encore sortis de l'auberge.
Messages postés
6351
Date d'inscription
samedi 1 juin 2002
Statut
Modérateur
Dernière intervention
2 août 2014
92
Wow, je me fais vieux j'avais complètement oublier PadRight

Sinon oui je n'avais pas penser à ce problème là
Il faudrais que tu utilises une police "Raster" (bitmap) mais je ne sais pas si c'est possible dans un RTB.

/*
coq
MVP Visual C#
*/