Добавьте файлы проекта.
This commit is contained in:
47
QWERTYkez.WordProcessor/ParagraphReplacer.cs
Normal file
47
QWERTYkez.WordProcessor/ParagraphReplacer.cs
Normal file
@@ -0,0 +1,47 @@
|
||||
namespace QWERTYkez.WordProcessor;
|
||||
|
||||
/// <summary>
|
||||
/// Вспомогательный класс для замены параграфов в различных контейнерах
|
||||
/// </summary>
|
||||
internal static class ParagraphReplacer
|
||||
{
|
||||
/// <summary>
|
||||
/// Заменяет параграф на новые параграфы в родительском элементе
|
||||
/// </summary>
|
||||
/// <param name="oldParagraph">Старый параграф для замены</param>
|
||||
/// <param name="newParagraphs">Новые параграфы</param>
|
||||
internal static void ReplaceParagraph(Paragraph oldParagraph, List<Paragraph> newParagraphs)
|
||||
{
|
||||
if (oldParagraph is null || newParagraphs is null || newParagraphs.Count == 0)
|
||||
return;
|
||||
|
||||
var parent = oldParagraph.Parent;
|
||||
if (parent is null)
|
||||
return;
|
||||
|
||||
int paraIndex = -1;
|
||||
var children = parent.ChildElements;
|
||||
|
||||
// Находим индекс параграфа
|
||||
for (int i = 0; i < children.Count; i++)
|
||||
{
|
||||
if (children[i] == oldParagraph)
|
||||
{
|
||||
paraIndex = i;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (paraIndex == -1)
|
||||
return;
|
||||
|
||||
// Удаляем старый параграф
|
||||
parent.RemoveChild(oldParagraph);
|
||||
|
||||
// Вставляем новые параграфы
|
||||
for (int i = 0; i < newParagraphs.Count; i++)
|
||||
{
|
||||
parent.InsertAt(newParagraphs[i], paraIndex + i);
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user