【发布时间】:2017-03-01 10:47:23
【问题描述】:
我希望有人可以帮助我解决我在项目中遇到的障碍。我是一般编程的初学者,我正在学习 C# (WinForms)。我正在制作一个简单的文本编辑器。我有一个富文本文件和一个 XML 文件来存储其他信息。在 XML 文件中,我有一个 pages 节点,我想用它来存储行号。我有一个按钮,可以将富文本框滚动到存储在 XML 文件中的下一页的行号。例如:
<pages>
<page1>0</page1>
<page2>32</page2>
</pages>
我有另一个按钮,可以将页面添加到页面节点。添加新页面时,我需要我的应用程序在页面节点中的正确位置添加具有正确名称的新节点。例如,为第 16 行添加一个新页面,文件将如下所示;
<pages>
<page1>0</page1>
<page2>16</page2>
<page3>32</page3>
</pages>
到目前为止,我已经在 XML 文件中添加了一个新节点并获得了选定的行号,但我不知道下一步。 首先,如何让新节点(在上述情况下为 page2)的名称中包含正确的数字?如果您在第 8 行再次单击添加页面按钮,它将变为 page2,第 16 行将变为 page3,第 32 行将变为 page4,依此类推。请参阅以下代码中的注释 1,该代码来自主 form.cs 文件。
string xmlFile = @"C:/test.xml";
private void bottomBarAddPageButton_Click(object sender, EventArgs e)
{
int cursorPosition = mainTextbox.SelectionStart;
int lineIndex = mainTextbox.GetLineFromCharIndex(cursorPosition);
XmlNode pagesNodes = XmlReader.SelectSingleNode("root/pages");
XmlNode pageNodeCreate = XmlReader.CreateElement("page"); // Comment 1: Needs to add correct page number here
pageNodeCreate.InnerText = Convert.ToString(lineIndex);
pagesNodes.AppendChild(pageNodeCreate);
XmlReader.Save(xmlFile);
}
以下是 XML 文件当前的样子。单击bottomBarAddPageButton 会添加一个名为page 的新节点,其中内部文本作为选定的行号(lineIndex)。
<root>
<otherNodes>
<pages>
<page>0</page>
<page>28</page>
<page>32</page>
<page>8</page>
<page>76</page>
<page>10</page>
</pages>
</root>
其次,添加新节点后,如何重新排序页面中的所有子节点,使 XML 文件看起来像这样?
<root>
<otherNodes>
<pages>
<page1>0</page1>
<page2>8</page2>
<page3>10</page3>
<page4>28</page4>
<page5>32</page5>
<page6>76</page6>
</pages>
</root>
当页面被删除时,我还需要能够执行相反的操作。例如,如果单击富文本框第 19 行的删除页面按钮,则 page3(包含第 10 行的节点)将被删除,因此 page2 将从第 8 行到第 27 行。page3 从第 28 行到第 27 行第 32 行,依此类推。
正如我在开始时所说的,我是 C# 的初学者,但我不知道该怎么做,最好的方法是什么,或者我是否走在正确的道路上。所以我希望那里有人能够帮助我。我希望我已经足够清楚地解释了我想要做的事情,并且我的问题是有道理的。
非常感谢您的宝贵时间和帮助。
摩根
附:请原谅我发布了这么大的问题,但我想提供尽可能多的信息。
【问题讨论】: