c# rtb: Bolden inline 覆盖另一个 bolden inline
c# rtb: Bolden inline overrides another bolden inline
我的项目是 Windows 10 通用应用程序!
我几乎有两个月的问题,当我在一个 rtb 中加粗两个词时,第二个会覆盖第一个粗体内联。
示例:
我要加粗:
Hello; Bye
来自 rtb 的文本:
Hello and Bye
现在我用正则表达式搜索,天气预报中有 "Hello"/"Bye"。
每次在 rtb 中有 "Hello" 时,我都会在与 "hello" 之前相同的位置插入一个粗体内联文本 "Hello"。
然后我用"Bye"做同样的事情。
我的代码:
string text = run.Text; -> "Hello and Bye"
MatchCollection mc = Regex.Matches(text, "Hello", RegexOptions.Multiline);
int i = 0;
var bold = new Bold();
int iIn = 0;
int iLe = 0;
p.Inlines.Clear(); -> p = Paragraph from rtb
foreach (Match match in mc)
{
p.Inlines.Add(new Run { Text = text.Substring(i, match.Index - i) });
bold.Inlines.Add(new Run { Text = text.Substring(match.Index, match.Length) });
p.Inlines.Add(bold);
i = match.Index + match.Length;
if (i < text.Length)
{
p.Inlines.Add(new Run { Text = text.Substring(i) });
}
}
后面是相同的代码,再见。
现在的问题是,我清除了第一个粗体内联 (Hello),同时插入了第二个粗体内联 (Bye)。
有谁知道在 rtb 中加粗特定单词的替代方法或改进代码的建议?我几乎尝试了所有方法,但没有任何效果...
使用以下命令select将相关字符加粗:
public void Select(
TextPointer start,
TextPointer end
)
In order to get TextPointer, try this (not checked):
TextPointer pointer = document.ContentStart;
TextPointer start = pointer.GetPositionAtOffset(0);
TextPointer end = start.GetPositionAtOffset(5);
rtb.Select (start,end); // for example to select Hello
// Then change the font to bold
我的项目是 Windows 10 通用应用程序!
我几乎有两个月的问题,当我在一个 rtb 中加粗两个词时,第二个会覆盖第一个粗体内联。
示例:
我要加粗:
Hello; Bye
来自 rtb 的文本:
Hello and Bye
现在我用正则表达式搜索,天气预报中有 "Hello"/"Bye"。 每次在 rtb 中有 "Hello" 时,我都会在与 "hello" 之前相同的位置插入一个粗体内联文本 "Hello"。
然后我用"Bye"做同样的事情。
我的代码:
string text = run.Text; -> "Hello and Bye"
MatchCollection mc = Regex.Matches(text, "Hello", RegexOptions.Multiline);
int i = 0;
var bold = new Bold();
int iIn = 0;
int iLe = 0;
p.Inlines.Clear(); -> p = Paragraph from rtb
foreach (Match match in mc)
{
p.Inlines.Add(new Run { Text = text.Substring(i, match.Index - i) });
bold.Inlines.Add(new Run { Text = text.Substring(match.Index, match.Length) });
p.Inlines.Add(bold);
i = match.Index + match.Length;
if (i < text.Length)
{
p.Inlines.Add(new Run { Text = text.Substring(i) });
}
}
后面是相同的代码,再见。
现在的问题是,我清除了第一个粗体内联 (Hello),同时插入了第二个粗体内联 (Bye)。
有谁知道在 rtb 中加粗特定单词的替代方法或改进代码的建议?我几乎尝试了所有方法,但没有任何效果...
使用以下命令select将相关字符加粗:
public void Select(
TextPointer start,
TextPointer end
)
In order to get TextPointer, try this (not checked):
TextPointer pointer = document.ContentStart;
TextPointer start = pointer.GetPositionAtOffset(0);
TextPointer end = start.GetPositionAtOffset(5);
rtb.Select (start,end); // for example to select Hello
// Then change the font to bold