2017-02-26 3 views
0

Je travaille sur un formulaire de commande très simple qui sera imprimé via une imprimante d'étiquettes. J'ai un richTextBox pour afficher quels éléments ont été ajoutés et combien, mais ce que je n'arrive pas à comprendre, c'est comment éditer une "section" de la boîte de texte où plusieurs éléments du même élément sont ajoutés.Mise à jour d'une section de RichTextBox C#

J'ai actuellement 2 boutons, 1 pour le poulet et un pour le saumon.

private void button1_Click(object sender, EventArgs e) 
    { 
     chickenCount++; 
     richTextBox1.Text = richTextBox1.Text + "\nChicken " + chickenCount + "x"; 
    } 

et

private void button3_Click(object sender, EventArgs e) 
    { 
     salmonCount++; 
     richTextBox1.Text = richTextBox1.Text + "\nSalmon " + salmonCount + "x"; 
    } 

Alors disons que vous ajoutez 1 poulet puis 1 saumon et après cela, vous ajoutez un autre poulet.

Avec ce code, la sortie serait:

Chicken 1x 
Salmon 1x 
Chicken 2x 

Maintenant, je sais que ce code ne cesse l'ajout de texte sur la ligne suivante de la richTextBox

Mais ce que je veux que la sortie soit est:

Chicken 2x 
Salmon 1x 

Mais je ne suis pas vraiment sûr de savoir comment modifier en ligne quelque chose de richTextBox

+2

Vous ne pouvez pas réécrire tout le contenu de la zone de texte enrichi? – rene

+0

??? a) ne voudriez-vous pas de poulet 3x ??? b) pourquoi utiliser un RichtTextBox ?? c) si vous voulez un formatage, vous ne devez jamais changer le texte directement !! d) vous avez besoin de garder une liste ou un dictionnaire avec vos données pour faire le calcul __before__ création de texte e) comment prévoyez-vous prnt? Le RTB ne vous aidera pas là-bas! – TaW

+1

Vous pouvez utiliser un ['ObservableCollection'] (https://msdn.microsoft.com/en-us/library/ms668604 (v = vs.110) .aspx) et mettre à jour le' RichTextBox' quand il change (entièrement réécrire a) –

Répondre

0

Vous pouvez utiliser la propriété SelectedText et la méthode Select pour remplacer une ligne dans la zone de texte. Par exemple:

int line = 0; //The line that we want to replace is the first one 
string newstr = "Chicken x2"; //We want to replace the line with this string 
int charindex = this.GetFirstCharIndexFromLine(line); //Get the index of the first character of the line 
richTextBox1.Select(charindex, richTextBox1.Lines[line].Length); //Select the line 
richTextBox1.SelectedText = newstr; //Replace its text with the string 

Si vous ne savez pas quelle ligne que vous souhaitez remplacer, boucle à travers le réseau Lines la recherche du texte.