Laden...

Erstellen von Bookmarks im TextEditor von #develop

Erstellt von Flohen vor 17 Jahren Letzter Beitrag vor 16 Jahren 1.809 Views
F
Flohen Themenstarter:in
86 Beiträge seit 2007
vor 17 Jahren
Erstellen von Bookmarks im TextEditor von #develop

Hallo Forum,

hat jemand von euch eine Ahnung wie man Bookmarks/Lesezeichen im Texteditor von Sharpdevelop erstellt?
Ich benutze den Editor in meinem eigenen Programm.

Ich hab mich schon bemüht, aber wenn ich diesen Programmcode ausführe, dann wirft mir VS in der mit --> gekennzeichneten Linie eine ArgumentException (Ungültiger Parameter).


Caret car = this.textEditorControl.ActiveTextAreaControl.Caret;
Graphics g = this.textEditorControl.ActiveTextAreaControl.TextArea.CreateGraphics();
IconBarMargin icon = new IconBarMargin(this.textEditorControl.ActiveTextAreaControl.TextArea);
Bookmark bm = new Bookmark(this.textEditorControl.Document, car.Line);
--> bm.Draw(icon, g, car.Position);

Hab ich da einen Fehler drin oder was vergessen?

Auf der SharpDevelop Community Site finde ich auch nichts dazu. Oder ich bin zu blöd zum finden. Kann ja auch sein.

Kann mir einer helfen?

Gruß Flohen

F
Flohen Themenstarter:in
86 Beiträge seit 2007
vor 16 Jahren

Also, das passende Event hab ich gefunden.

TextEditor.ActiveTextAreaControl.TextArea.IconBarMargin.MouseDown


private void IconBarMargin_MouseDown(object sender, Point mousePos, MouseButtons mButtons)
{
   IconBarMargin margin = (IconBarMargin)sender;
   Graphics g = margin.TextArea.CreateGraphics();

   margin.DrawBookmark(g, mousePos.Y, true);
}

Ok, soweit so gut. Jetzt hab ich das Problem, dass ich nicht weiß in welcher Linie ich bin!

Er macht mir jetzt immer einen Bookmark dort, wo meine Maus ist. Solang ich mit ihr nicht zwischen die Linien zeige, wäre es ja gut! 😉

Beschäftigt sich niemand mit diesem Editor?

Gruß Lars

F
Flohen Themenstarter:in
86 Beiträge seit 2007
vor 16 Jahren

Servus at all.

Vergesst was ich bisher geschrieben hab. Das Ganze ist ganz Einfach!!!

Für diejenigen, die auch in so einer Situation wie ich sind. Hier eine kleine Hilfe!

Also:

Ihr legt am Besten Membervariablen in der Form an, die den TextEditor beinhaltet.


BookmarkManager m_Manager = null;
IconBarMargin m_Margin = null;

Dann übergebt ihr im Konstruktor den Manager vom Texteditor.
Und legt einen Eventhandler für das Mousedown-Event fest.


m_Manager = TextEditor.Document.BookmarkManager;
this.TextEditor.ActiveTextAreaControl.TextArea.IconBarMargin.MouseDown += new MarginMouseEventHandler(IconBarMargin_MouseDown);

Und dann legt ihr im Eventhandler das Bookmark fest.


m_Margin = (IconBarMargin)sender;

int clickedVisibleLine = (mousePos.Y / m_Margin.TextArea.TextView.FontHeight);
int lineNumber = m_Margin.TextArea.Document.GetFirstLogicalLine(clickedVisibleLine);

Bookmark mark = new Bookmark(m_Margin.Document, lineNumber);
m_BookMarkManager.AddMark(mark);
m_Margin.TextArea.Refresh();

Durch das hinzufügen zu dem Manager wird das Lesezeichen automatisch gezeichnet, gelöscht, usw.

Ich hoffe ich konnte irgendjemand hiermit helfen!

Gruß Flohen