2017-02-26 8 views
0

Ich arbeite an einem sehr einfachen Bestellformular, das über einen Etikettendrucker gedruckt wird. Ich habe eine richTextBox, um anzuzeigen, welche Elemente hinzugefügt wurden und wie viele, aber was ich nicht herausfinden kann ist, wie ein "Abschnitt" des Textfelds bearbeiten mehrere Elemente des gleichen Elements hinzugefügt wird.Aktualisieren eines Abschnitts von RichTextBox C#

Ich habe derzeit 2 Tasten, 1 für Huhn und eins für Lachs.

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

und

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

Also lassen Sie uns sagen, dass Sie ein Huhn dann 1 Lachs hinzufügen und danach, fügen Sie ein anderes Huhn.

Mit diesem Code der Ausgabe wäre:

Chicken 1x 
Salmon 1x 
Chicken 2x 

Jetzt weiß ich, dass dieser Code hält nur das Hinzufügen von Text auf der nächsten Zeile der richTextBox

Aber was will ich die Ausgabe sein:

Chicken 2x 
Salmon 1x 

Aber ich bin nicht wirklich sicher, wie etwas inline des richTextBox

bearbeiten
+2

Kannst du nicht den gesamten Inhalt der Richtextbox umschreiben? – rene

+0

??? a) möchtest du nicht Hühnchen 3x ??? b) Warum eine RichtTextBox ?? c) Wenn Sie Formatierungen wünschen, müssen Sie den Text niemals direkt ändern !! d) Sie müssen eine Liste oder ein Wörterbuch mit Ihren Daten führen, um die Mathematik zu machen __befor__ Text erstellen e) Wie planen Sie, zu print? Die RTB wird dir dort nicht helfen! – TaW

+1

Sie können eine ['ObservableCollection'] (https://msdn.microsoft.com/en-us/library/ms668604 (v = vs.110) .aspx) verwenden und die' RichTextBox' aktualisieren, wenn sie sich ändert (komplett neu schreiben it) –

Antwort

0

Sie können die SelectedText-Eigenschaft und die Select-Methode verwenden, um eine Zeile im Textfeld zu ersetzen. Zum Beispiel:

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 

Wenn Sie nicht wissen, welche Leitung Sie ersetzen möchten, Schleife durch die Lines Array für den Text zu suchen.

Verwandte Themen