你可以试试这个:
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
将返回有一个标志(见执行here)下一行。所以我认为你的做法是错误的。它可能应该是更喜欢这样的:
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个标志文件。请参阅markers documentation on the Scintilla site。
哪个数组超出范围? – joce 2013-03-18 18:09:19
另外,您应该使用HashMap而不是List。这样做会更有效,因为您不必检查书签的预存状态。 – joce 2013-03-18 18:12:13