你可以试试这个:
HashMap<int> bookmarks = new HashMap<int>();
for (int i = 0; i < scintilla1.Lines.Count; i++)
{
bookmarks.Add(scintilla1.Markers.FindNextMarker(i).Number);
}
foreach (var bookmark in bookmarks)
{
MessageBox.Show(bookmark.ToString());
}
此外,应该注意的是,这FindNextMarker
将返回具有标记的下一行(请参阅此处的实现)。所以我认为你的方法是错误的。它可能应该更像这样:
HashMap<int> bookmarks = new HashMap<int>();
int nextBookmark = 0;
while (nextBookmark != UInt32.MaxValue)
{
nextBookmark = scintilla1.Markers.FindNextMarker(nextBookmark).Line;
if (nextBookmark != UInt32.MaxValue)
{
bookmarks.Add(nextBookmark);
}
}
foreach (var bookmark in bookmarks)
{
MessageBox.Show(bookmark.ToString());
}
更好的是,您可以使用以下方法获取所有标记public List<Marker> GetMarkers(int line)
:
foreach (var bookmark in scintilla1.Markers.GetMarkers(0))
{
MessageBox.Show(bookmark.Line.ToString());
}
需要注意的是,每个文件似乎最多有 32 个标记。请参阅Scintilla 网站上的标记文档。