首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Clipboard.GetImage()返回null

Clipboard.GetImage()返回null
EN

Stack Overflow用户
提问于 2015-09-08 15:36:32
回答 1查看 1.4K关注 0票数 3

我有一个DataGridView,它包含一个Image列和一些文本列。我有一个非常简单的处理程序,它允许用户从单元格中复制文本或图像,并将图像和文本粘贴到其中。复制/粘贴在文本上运行良好,但粘贴在图像上不起作用。(注意:如果我粘贴了另一个应用程序的剪贴板上的图片,比如画图,那么效果很好)

如果我在Clipboard.GetImage()之后立即调用Clipboard.SetImage(),它可以正常工作,这使我相信这可能是一个范围问题,或者Clipboard正在从图像中获取引用而不是底层字节。是否必须将原始图像字节放在共享位置?我检查了GetImage的MSDN定义以确保我做的正确。

代码语言:javascript
复制
    private void dataGridView_KeyDown(object sender, KeyEventArgs e)
    {
        if (e.KeyCode == Keys.V && e.Modifiers == Keys.Control)
        {
            if (Clipboard.ContainsImage())
            {
                Image img = Clipboard.GetImage();  // always returns null

                if (cell.ColumnIndex == _imageCol)
                    cell.Value = img;
            }

            if (Clipboard.ContainsText())
            {
                if (cell.ColumnIndex != _imageCol)
                    cell.Value = Clipboard.GetText(); // always works
            }
        }

        if (e.KeyCode == Keys.C && e.Modifiers == Keys.Control)
        {
            DataGridViewCell cell = dataGridView1.SelectedCells[0];

            if (cell.ColumnIndex == _imageCol)
            {
                Clipboard.SetImage((Image)cell.Value);
                Image img2 = Clipboard.GetImage();  // successfully returns the Image
            }
            else
                Clipboard.SetText((string)cell.Value);
        }
    }
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-09-10 17:48:53

您没有指望的是,DataGridView还实现了复制/粘贴。使用与您使用的相同的快捷键击键,Ctrl+C和Ctrl+V。因此,它看起来就在您将图像放在剪贴板上之后工作,但是DGV也会这样做,并覆盖剪贴板内容。不幸的是,它不复制图像,只复制文本。图像列的空字符串。

你必须告诉它你处理了击键:

代码语言:javascript
复制
    private void dataGridView1_KeyDown(object sender, KeyEventArgs e) {
        if (e.KeyCode == Keys.V && e.Modifiers == Keys.Control) {
            // etc...
            e.Handled = true;
        }

        if (e.KeyCode == Keys.C && e.Modifiers == Keys.Control) {
            // etc...
            e.Handled = true;
        }
    }
票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32461845

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档