< RichTextBox中的字符导致问题

时间:2014-02-05 20:34:07

标签: c# winforms richtextbox

编辑 - 对不起,我想我想过多地“模糊”我的工作代码......我不知道为什么它有这么多的downvotes但无论如何。请参阅下面的实际代码更新/编辑。

我正在尝试将一段文本插入到一行(<data)的现有部分中,该部分位于我的RichTextBox控件中一行的开头。但是,每当我按以下方式执行此操作时:< / p>

private void AddSelectedIntellisense(object sender, EventArgs e)
    {
        ToolStripItem x = sender as ToolStripItem;
        int cursorpos = this.txt_Body.SelectionStart;
        string final = this.txt_Body.Text.Insert(cursorpos, x.Text);
            //final var at breakpoint is equal to "<data log=\"Original\""
            //then i assign it/that to the RTB.Text
        this.txt_Body.Text = final;
            //when checked with breakpoint, this.txt_Body.Text is equal to
            //"log=\"\"<data log=\"Original\"" 
        this.txt_Body.SelectionStart = cursorpos + x.Text.Length;
    }

我在想它是&lt;当我将字符串分配给.Text属性时导致问题的字符(因为如果我用[在我的逻辑中替换&lt; [没有问题]),但我不知道如何解决它...如果你能帮助我,我真的很感激。

我还手动检查了所有索引,它们都完美地完成了...所以我不知道为什么RTB.Text值与字符串不同但是如果有人知道请告诉我。

干杯!

2 个答案:

答案 0 :(得分:0)

您首先设置:

txt = this.RTB1.Text.Substring(starts, length);

然后在下一行,您将替换txt的值:

txt = this.RTB1.Text.Insert(index,"log='test'></data>");

您可能希望连接字符串:

string txt = this.RTB1.Text.Substring(starts, length);
txt += this.RTB1.Text.Insert(index,"log='test'></data>");
this.RTB1.Text = txt;

答案 1 :(得分:0)

好的人......我想我会把它交给Aaron,因为它有些相关,没有其他人回答。

答案是: 我正在使用RTB.On_TextChanged事件根据条件触发intellisense。但是,因为我还在Intellisense中将RTB.Text值设置为文本,所以条件变为true两次并且将特定文本添加两次。所以当我添加intellisense文本并在on_textchanged事件中检查它时,我设置了一个标志。

为这种混乱而欢呼和抱歉。