これを試すことができますか:
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 サイトのマーカーに関するドキュメントを参照してください。