2017-07-05 3 views
1

Ich bin dabei, eine Base64-Zeichenfolge programmgesteuert in ein Image zu konvertieren, das ich dann in eine RichTextBox einfügen.Image aus der Zwischenablage kann nicht in RichTextBox eingefügt werden

Momentan lade ich die Zeichenfolge in einen Stream und wandeln diesen in ein Bild um. Ich lade das dann in die Zwischenablage und versuche es einzufügen. Wenn ich den Code ausführe, wird nichts in die richTextBox eingefügt. Nach dem Ausführen des Codes wird das Bild korrekt in meine Zwischenablage gesetzt und ich kann es manuell in die richTextBox einfügen - es scheint einfach nicht programmgesteuert zu funktionieren.

Hier ist mein Code:

byte[] img_bytes = Convert.FromBase64String(imgStr); 
using (var ms = new MemoryStream(img_bytes, 0, img_bytes.Length)) 
{ 
    Image img = Image.FromStream(ms, true); 
    Bitmap imgb = (Bitmap)Bitmap.FromStream(ms); 
    Clipboard.SetDataObject(img); 
    Console.WriteLine(Clipboard.ContainsImage()); // Prints True 
    richTextBox1.Paste(DataFormats.GetFormat(DataFormats.Bitmap)); 
    Console.WriteLine(richTextBox1.CanPaste(DataFormats.GetFormat(DataFormats.Bitmap))); // Prints True 
    richTextBox1.Text += "\n"; 
} 

Update: Es scheint, dass das Textfeld einstellen, nachdem das Bild einfügen Bild löscht. Ich denke, die Frage ist jetzt, wie habe ich sowohl das Bild als auch den Text?

+0

Können Sie zuerst versuchen, eine nicht gestreamte Bitmap einzufügen? 'richTextBox1.Paste (DataFormats.GetFormat (DataFormats.Bitmap));' ähnelt stark dem [msdn-Codebeispiel] (https://msdn.microsoft.com/de-de/library/23kah9ca (v = vs.110). aspx) Ich bezweifle, dass es ein Problem gibt, aber vielleicht funktioniert Ihr Bitmap aus irgendeinem Grund nicht – Kartoffel

+0

Ich habe das gleiche Problem - ich habe eine PNG-Datei aus der Datei geladen, aber es kann nicht eingefügt werden, wenn ich das Programm ausführe. Die PNG kopiert erfolgreich in meine Zwischenablage und ich kann sie manuell in die richTextBox einfügen :( – user2884505

+0

können Sie versuchen, den gesamten Code von msdn zu reproduzieren ich zuvor verlinkt? Vielleicht ist das Problem woanders ... – Kartoffel

Antwort

1

Es scheint, dass das Festlegen eines Textattributs von richTextBox nach dem Einfügen das Bild löschte. Ich habe die Linie

richTextBox1.Text += "\n"; 

zu

Clipboard.SetText("\n"); 
richTextBox1.Paste(); 

, die eine ziemlich schreckliche Lösung ist, aber es funktioniert und ich bin auf einer Frist :) Ich bin offen für andere Vorschläge, die weniger hacky sind!

+0

Zuweisen von Daten zu 'Text' ersetzt den Inhalt der RichTextBox durch den ursprünglichen Inhalt, _as string_, plus die angegebene Zeichenkette Sie müssten irgendwie zu den ursprünglichen zugrundeliegenden RTF Daten der RichTextBox gelangen. – Nyerguds

Verwandte Themen