【问题标题】:Updating a section of RichTextBox C#更新 RichTextBox C# 的一部分
【发布时间】:2017-02-26 12:24:59
【问题描述】:

我正在制作一个非常简单的订单表格,该表格将通过标签打印机打印出来。 我有一个richTextBox 来显示已添加的项目和数量,但我不知道如何编辑文本框的“部分”是添加了同一项目的多个项目。

我目前有 2 个按钮,1 个用于鸡肉,1 个用于鲑鱼。

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

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

假设您添加了 1 只鸡,然后添加了 1 条鲑鱼,然后再添加了另一只鸡。

使用此代码,输出将是:

Chicken 1x
Salmon 1x
Chicken 2x

现在我知道这段代码只是不断在richTextBox 的下一行添加文本

但我想要的输出是:

Chicken 2x
Salmon 1x

但我不确定如何编辑 richTextBox 的内联内容

【问题讨论】:

  • 不能重写richtextbox的全部内容吗?
  • ??? a) 你不想要鸡肉 3x 吗? b) 为什么使用 RichtTextBox? c)如果你想要格式化,你永远不必直接更改文本! d) 您需要保留一个包含数据的列表或字典,以便在创建文本之前 进行数学计算 e) 您打算如何打印? RTB 帮不了你!
  • 您可以使用 ObservableCollection 并在 RichTextBox 更改时更新它(完全重写)
  • a) 不,在我的示例中,按钮只被按下了两次。但由于按钮只是在下一行添加文本,最后一个鸡是正确的,所以我希望能够覆盖第一个。所以鸡 2x 是正确的。 b)我是一个新手程序员,这就是我想这样做的方式。 e) 它通过 dymo SDK 打印到 Dymo Label writer。我已经开始工作了。
  • 谢谢 Emanuel 和 Rene,我会看看这种方法!非常感谢。

标签: c# text richtextbox


【解决方案1】:

您可以使用SelectedText 属性和Select 方法来替换文本框上的一行。例如:

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

如果您不知道要替换哪一行,请遍历 Lines 数组搜索文本。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-07
    • 2016-03-19
    • 2015-10-06
    • 1970-01-01
    • 2011-09-06
    • 2013-02-08
    相关资源
    最近更新 更多