Zum Inhalt springen

[C#]Text in Visual Studio Editor einfügen


Seth1988

Empfohlene Beiträge

Hallo,

ich habe folgendes Problem:

Ich müsste einen Text aus der Zwischenablage in den Editor des Visual Studio einfügen, und zwar an der aktuellen Position des Cursors.

Das mit der Zwischenablage war kein Problem, die hab ich jetzt in einem String gespeichert. Aber ich finde keine Möglichkeit, auf den Editor zuzugreifen.

Durch google hab ich nur ein Beispiel in VB gefunden, dass über activeDocument funktioniert, aber sowas hab ich in C# nicht gefunden.

Wäre für jede Hilfe dankbar.

Bearbeitet von Seth1988
Link zu diesem Kommentar
Auf anderen Seiten teilen

Ich habe jetzt mal mit ein paar Kollegen gesprochen und bin inzwischen soweit, das ich auf den Editor zugreifen kann, und zwar über TextSelection. Allerdings stürzt das Programm beim Ausführen mit einem HRESULT ab, den ich auch nach Stunden Internetrecherge nicht auflösen konnte. Das war der Code:


EnvDTE80.DTE2 dte2;

dte2 = (EnvDTE80.DTE2)System.Runtime.InteropServices.Marshal.

GetActiveObject("VisualStudio.DTE.9.0");

Window activeWindow = dte2.ActiveWindow;

Document activeDoc = activeWindow.Document;


EditPoint MeinEditPoint = null;

TextDocument textdocument = (EnvDTE.TextDocument)dte2.ActiveDocument.Object("textdocument");


TextSelection textselection = textdocument.Selection;

MeinEditPoint = textdocument.StartPoint.CreateEditPoint();

MeinEditPoint = textselection.AnchorPoint.CreateEditPoint();

MeinEditPoint.MoveToPoint(textselection.ActivePoint);

MeinEditPoint.Insert("Test");

Die letzte Zeile mit dem Insert Befehl hat den HRESULT geworfen, da konnte mir dann auch kein Kollege oder Google mehr weiterhelfen, daher habe ich das Programm umgebaut, wenn mir jetzt trotzdem jemand helfen könnte, wär es auch kein Problem, wieder den alten Code zu benutzen. ÃŽch habe jetzt versucht, einfach die Tasenkombination Strg+V zu simulieren, hier der Code:

IDataObject zwischenablage = Clipboard.GetDataObject();

zwischenablage.SetData(txt_dbText.Text);


SendKeys.SendWait("^+{v}");

Testweise hab ich die Funktion direkt Ausführen lassen, wenn man den Butten des AddIn in der Toolbar drückt, da hat sie wunderbar funktioniert.

Allerdings muss ich nun vorher eine Form aufrufen, in der man sich den Text aus einer Datenbank holt, alles kein Problem, lad ich dann in die Zwischenablage, allerdings ist der Caret dann nicht mehr im Editor und der Text kann nicht eingefügt werden.

Kann ich irgendwie den Focus/Caret wieder auf den Code-Editor kriegen?

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...