编辑 - 对不起,我想我想过多地“模糊”我的工作代码......我不知道为什么它有这么多的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值与字符串不同但是如果有人知道请告诉我。
干杯!
答案 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事件中检查它时,我设置了一个标志。
为这种混乱而欢呼和抱歉。