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

vltsax25  于 2023-02-19  发布在  其他
关注(0)|答案(1)|浏览(175)

我希望以编程方式将base64字符串转换为Image,然后将其插入richTextBox。
现在,我将字符串加载到流中,并将其转换为Image。然后,我将其加载到剪贴板中并尝试粘贴。但是,当我执行代码时,没有任何内容粘贴到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";
}

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

xu3bshqb

xu3bshqb1#

粘贴后设置richTextBox的text属性似乎是在删除图像。

richTextBox1.Text += "\n";

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

这是一个相当糟糕的解决方案,但它的工作,我在一个最后期限:)我愿意接受其他建议,不那么黑客!

相关问题