0
テキストファイルを読み込んで分かれているテキストファイルを追加する方法を考えようとしています。 |
それ以降はもう一度|
が見えるまでボールドにしてください。しかし、私は部品の中でそれを行う方法を理解できません。部品全体に下線を引いていますが、それはそれです。WPF RichTextBoxテキストファイルを読み込んで太字のテキストを挿入
テキストファイルがどのように表示されるかの例:ここで私はこの|*~b^works|
を希望しています。
private static TextPointer GetPoint(TextPointer start, int x)
{
var ret = start;
var i = 0;
while (i < x && ret != null)
{
if (ret.GetPointerContext(LogicalDirection.Backward) == TextPointerContext.Text ||
ret.GetPointerContext(LogicalDirection.Backward) == TextPointerContext.None)
{
i++;
}
if (ret.GetPositionAtOffset(1, LogicalDirection.Forward) == null)
{
return ret;
}
ret = ret.GetPositionAtOffset(1,LogicalDirection.Forward);
}
return ret;
}
public void LetsSave()
{
string end = new TextRange(box.Document.ContentStart, box.Document.ContentEnd).Text;
Clipboard.SetText(end);
box.Document.Blocks.Clear();
box.Document.Blocks.Add(new Paragraph(new Run(richText)));
richText = new TextRange(box.Document.ContentStart, box.Document.ContentEnd).Text;
File.WriteAllText(@"C:\Users\jacob\Documents\test\test.txt", end);
string file = File.ReadAllText(@"C:\Users\jacob\Documents\test\test.txt");
var xx = file.Split('|');
box.Document.Blocks.Clear();
int length = 0;
int wordl = 0;
foreach (var c in xx)
{
wordl = c.Length;
var start = box.Document.ContentStart;
var startPos = GetPoint(start, length);
var endPos = GetPoint(start, length + wordl);
var textRange = box.Selection;
textRange.Select(startPos, endPos);
TextDecorationCollection tdc = textRange.GetPropertyValue(Inline.TextDecorationsProperty) as TextDecorationCollection;
MessageBox.Show(c);
box.AppendText(c);
if (c.Contains("*~"))
{
tdc.Add(myUnderline);
textRange.ApplyPropertyValue(Inline.TextDecorationsProperty, tdc);
}
length += c.Length;
}
}