无法将图像从剪贴板粘贴到 RichTextBox

Can't paste Image from Clipboard to RichTextBox

我希望以编程方式将 base64 字符串转换为图像,然后将其插入到 richTextBox 中。

现在我将字符串加载到流中并将其转换为图像。然后我将其加载到剪贴板上并尝试粘贴。但是,当我执行代码时,没有任何内容粘贴到 richTextBox 中。在 运行 代码之后,图像在我的剪贴板中正确设置,我可以将它手动粘贴到 richTextBox 中 - 它似乎无法以编程方式工作。

这是我的代码:

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";
}

更新:似乎在粘贴图像后设置文本字段会删除图像。我想现在的问题是,如何同时拥有图片和文字?

似乎在粘贴后设置 richTextBox 的文本属性会删除图像。我换了行

richTextBox1.Text += "\n";

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

这是一个非常糟糕的解决方案,但它确实有效,而且我在截止日期前 :) 我愿意接受其他不那么老套的建议!