Je crée un éditeur de texte et de script simple avec surlignage de code. Pour cela, j'utilise un RichTextBox. Mais je ne sais pas comment faire pour montrer les numéros des lignes sur le côté gauche, comme dans VS ou Notepad ++. y-a-t'il une solution?Comment afficher le numéro d'une ligne dans un RichTextBox C#
Répondre
J'ai essayé en réutilisant le code des articles de CodeProject référencés ailleurs, mais toutes les options que je regardais, semblait un peu trop kludgy. J'ai donc construit un autre RichTextBoxEx qui affiche les numéros de ligne.
La numérotation des lignes peut être activée ou désactivée. C'est rapide. Il défile proprement. Vous pouvez sélectionner la couleur des nombres, les couleurs d'arrière-plan pour un dégradé, l'épaisseur de la bordure, la police, s'il faut utiliser des zéros en tête. Vous pouvez choisir de numéroter des lignes "tel qu'affiché" ou en fonction des nouvelles entrées dans le RTB.
Exemples:
alt text http://i39.tinypic.com/13zcoz6.jpg
alt text http://i43.tinypic.com/wml2z9.jpg
alt text http://i39.tinypic.com/25i4x3o.jpg
Il a ses limites: il affiche uniquement des chiffres sur la gauche. Vous pourriez changer cela sans trop d'effort si vous vous en souciez.
Le code est conçu en tant que projet C#. Bien que cela fasse partie d'une «solution» plus grande (un outil de visualisation XPath), le RichTextBox personnalisé est empaqueté en tant qu'assemblage séparable et est prêt à être utilisé dans vos nouveaux projets. Dans Visual Studio, ajoutez simplement une référence à la DLL et vous pouvez le faire glisser et déposer sur votre surface de conception. Vous pouvez simplement ignorer l'autre code de la solution plus grande.
Vous pouvez réaliser cela en tirant votre propre contrôle. Voici un exemple comment vous dessiner link
Je stockerais chaque ligne dans une classe qui a des méthodes à publier dans la zone de texte enrichi. Dans cette méthode, vous pouvez ajouter le numéro de ligne en fonction de sa position dans la classe.
Par exemple (très approximativement):
class myText
{
public List<string> Lines;
public string GetList()
{
StringBuilder sb = new StringBuilder();
int i = 0;
foreach (string s in Lines)
{
sb.AppendFormat("{0}: {1}", i, s).AppendLine();
i++;
}
return sb.ToString();
}
}
Scintilla.Net http://scintillanet.codeplex.com/ pourrait être la solution la plus réalisable pour vos besoins. Mais pour mon projet, j'ai utilisé une solution proposée par Cheeso (RichTextBoxEx de XPath visualizer). C'est assez simple et rapide pour les documents pas très gros. Tous les autres composants .net de l'Internet étaient incroyablement lent.
La façon simple:
Dim myArray = RichTextBox1.Text.Split()
Dim cnt As Integer = 0
RichTextBox1.Clear()
Do While cnt < myArray.Count
RichTextBox1.AppendText(cnt & ":" & myArray(cnt) & vbNewLine)
cnt = cnt + 1
Loop
public int getWidth()
{
int w = 25;
// get total lines of richTextBox1
int line = richTextBox1.Lines.Length;
if (line <= 99)
{
w = 20 + (int)richTextBox1.Font.Size;
}
else if (line <= 999)
{
w = 30 + (int)richTextBox1.Font.Size;
}
else
{
w = 50 + (int)richTextBox1.Font.Size;
}
return w;
}
public void AddLineNumbers()
{
// create & set Point pt to (0,0)
Point pt = new Point(0, 0);
// get First Index & First Line from richTextBox1
int First_Index = richTextBox1.GetCharIndexFromPosition(pt);
int First_Line = richTextBox1.GetLineFromCharIndex(First_Index);
// set X & Y coordinates of Point pt to ClientRectangle Width & Height respectively
pt.X = ClientRectangle.Width;
pt.Y = ClientRectangle.Height;
// get Last Index & Last Line from richTextBox1
int Last_Index = richTextBox1.GetCharIndexFromPosition(pt);
int Last_Line = richTextBox1.GetLineFromCharIndex(Last_Index);
// set Center alignment to LineNumberTextBox
LineNumberTextBox.SelectionAlignment = HorizontalAlignment.Center;
// set LineNumberTextBox text to null & width to getWidth() function value
LineNumberTextBox.Text = "";
LineNumberTextBox.Width = getWidth();
// now add each line number to LineNumberTextBox upto last line
for (int i = First_Line; i <= Last_Line + 2; i++)
{
LineNumberTextBox.Text += i + 1 + "\n";
}
}
private void Form1_Load(object sender, EventArgs e)
{
LineNumberTextBox.Font = richTextBox1.Font;
richTextBox1.Select();
AddLineNumbers();
}
private void richTextBox1_SelectionChanged(object sender, EventArgs e)
{
Point pt = richTextBox1.GetPositionFromCharIndex(richTextBox1.SelectionStart);
if (pt.X == 1)
{
AddLineNumbers();
}
}
private void richTextBox1_VScroll(object sender, EventArgs e)
{
LineNumberTextBox.Text = "";
AddLineNumbers();
LineNumberTextBox.Invalidate();
}
private void richTextBox1_TextChanged(object sender, EventArgs e)
{
if (richTextBox1.Text == "")
{
AddLineNumbers();
}
}
private void richTextBox1_FontChanged(object sender, EventArgs e)
{
LineNumberTextBox.Font = richTextBox1.Font;
richTextBox1.Select();
AddLineNumbers();
}
private void LineNumberTextBox_MouseDown(object sender, MouseEventArgs e)
{
richTextBox1.Select();
LineNumberTextBox.DeselectAll();
}
private void Form1_Resize(object sender, EventArgs e)
{
AddLineNumbers();
}
- 1. C#, RichTextBox: comment implémenter le défilement ligne par ligne?
- 2. Afficher le numéro de ligne dans la zone de texte enrichi C#
- 3. Afficher le numéro de ligne dans la gestion des exceptions
- 4. Comment afficher un fichier .rtf dans un Powershell RichTextBox
- 5. Comment afficher le contenu html avec un RichTextBox?
- 6. Afficher un numéro de mots dans SSRS
- 7. Comment puis-je faire défiler jusqu'à un numéro de ligne spécifié d'un contrôle RichTextBox à l'aide de C#?
- 8. Comment afficher le numéro de révision SVN dans git log?
- 9. Comment modifier le paragraphe backround dans le contrôle richtextbox (C#)?
- 10. Comment WPF RIchtextbox peut-il afficher Unicode?
- 11. Trouvez le numéro dans la ligne. Javascript
- 12. Afficher le numéro de ligne sur Borland C++ Builder 6 (2002)
- 13. Comment créer un numéro de ligne (iReport)
- 14. jQuery afficher le numéro image
- 15. Supprimer une ligne spécifique dans un .NET RichTextBox
- 16. Comment obtenir le numéro de ligne?
- 17. Comment modifier le format de lignes spécifiées dans un RichTextBox
- 18. C# vérifier le numéro de ligne du lecteur de chaîne
- 19. Texte à colorier dans RichtextBox, C#
- 20. Meilleur Ajuster un document dans Richtextbox
- 21. comment afficher le numéro Hebrew correct dans l'ordre
- 22. Comment utiliser le contrôle RichTextBox?
- 23. Comment modifier un RichTextBox d'un autre formulaire en C# .NET
- 24. Contenu particulier dans richtextbox
- 25. Comment sélectionner du texte dans RichTextBox, puis le colorier?
- 26. Ajouter un numéro de ligne et afficher le total à l'aide de COUNT (PHP MySQL)
- 27. Comment supprimer une ligne ayant un numéro de ligne en utilisant C#?
- 28. Comment faire pour déplacer la barre de défilement vers le haut d'une ligne? (En C# RichTextBox)
- 29. RegExp C# et richtextbox
- 30. C#: glisser-déposer dans WPF (RichTextbox)
Vérifiez ce projet sur le Code du projet - http://www.codeproject.com/KB/edit/numberedtextbox.aspx –
Peut-être que vous devriez prendre le même contrôle comme Notepad ++. C'est Scintilla.Net: http://scintillanet.codeplex.com/ – Oliver