【问题标题】:Can't paste Image from Clipboard to RichTextBox无法将剪贴板中的图像粘贴到 RichTextBox
【发布时间】:2017-07-05 19:04:06
【问题描述】:

我希望以编程方式将 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";
}

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

【问题讨论】:

  • 您可以先尝试粘贴非流式位图吗? richTextBox1.Paste(DataFormats.GetFormat(DataFormats.Bitmap));msdn code example 非常相似,所以我怀疑是否存在问题,但也许您的位图因任何原因无法正常工作
  • 我似乎遇到了同样的问题 - 我从文件中加载了一个 PNG 文件,但在执行程序时它无法粘贴。 PNG确实成功复制到我的剪贴板,但我可以手动将其粘贴到richTextBox中:(
  • 你能尝试从我之前链接的 msdn 复制整个代码吗?也许问题出在其他地方......
  • 我发现了问题!粘贴图像后设置文本会出于某种原因删除图像。现在要弄清楚如何同时拥有图像和文本......

标签: c# image winforms clipboard


【解决方案1】:

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

richTextBox1.Text += "\n";

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

这是一个非常糟糕的解决方案,但它有效,而且我在最后期限 :) 我愿意接受其他不那么 hacky 的建议!

【讨论】:

  • 将数据分配给Text 将RichTextBox 的内容替换为原始内容,as string,加上给定的字符串。您必须以某种方式获取 RichTextBox 的原始底层 RTF 数据。
猜你喜欢
  • 2010-11-10
  • 1970-01-01
  • 2013-12-06
  • 2013-07-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-05-02
  • 2018-06-14
相关资源
最近更新 更多