none
这个功能是怎么实现的? RRS feed

  • 问题

  •  

    在网上看到一篇文章,觉得有点意思,就拷了下来。

    结果在记事本里一复制,发现拷贝的那段文章后面被自动加了回车换行以及一句文章出处:

     

    本篇文章来源于 ****** 原文链接:******************

     

    请问,这个是怎么做到的?

    2008年4月11日 9:05

答案

  • 这个功能是当判断你复制的时候操作了windows剪切版的内容, 下面给你个代码看看如何操作剪切版的:

    Code Snippet

            private void copyMenuItem_Click(object sender, System.EventArgs e)
            {
                Clipboard.Clear();
                string sendToClipboard = "";

                for (int i = reportGrid.SelectedRows.Count; i > 0; i--)
                {
                    for (int j = 0; j < reportGrid.SelectedRows[i - 1].Cells.Count - 3; j++)
                    {
                        if (j >= 1)
                        {
                            sendToClipboard += "\t";
                        }

                        sendToClipboard += reportGrid.SelectedRows[i - 1].Cells[j].Value.ToString();
                    }

                    sendToClipboard += Environment.NewLine;
                }

                try
                {
                    Clipboard.SetDataObject(sendToClipboard, true);
                }
                catch
                {
                    //nothing
                }
            }

     

     

    代码是C#的 不过相信你能理解

     

    谢谢

    Wilson

    2008年4月11日 9:15
    版主
  • Code Snippet

     

    <script>
    document.body.oncopy = function () { setTimeout( function () { var text = clipboardData.getData("text"); if (text) { text = text + "本篇文章来源于"+ location.href; clipboardData.setData("text", text); } }, 100 ) }
    </script>

     

     

    2008年4月11日 9:24
    版主

全部回复

  • 这个功能是当判断你复制的时候操作了windows剪切版的内容, 下面给你个代码看看如何操作剪切版的:

    Code Snippet

            private void copyMenuItem_Click(object sender, System.EventArgs e)
            {
                Clipboard.Clear();
                string sendToClipboard = "";

                for (int i = reportGrid.SelectedRows.Count; i > 0; i--)
                {
                    for (int j = 0; j < reportGrid.SelectedRows[i - 1].Cells.Count - 3; j++)
                    {
                        if (j >= 1)
                        {
                            sendToClipboard += "\t";
                        }

                        sendToClipboard += reportGrid.SelectedRows[i - 1].Cells[j].Value.ToString();
                    }

                    sendToClipboard += Environment.NewLine;
                }

                try
                {
                    Clipboard.SetDataObject(sendToClipboard, true);
                }
                catch
                {
                    //nothing
                }
            }

     

     

    代码是C#的 不过相信你能理解

     

    谢谢

    Wilson

    2008年4月11日 9:15
    版主
  • Code Snippet

     

    <script>
    document.body.oncopy = function () { setTimeout( function () { var text = clipboardData.getData("text"); if (text) { text = text + "本篇文章来源于"+ location.href; clipboardData.setData("text", text); } }, 100 ) }
    </script>

     

     

    2008年4月11日 9:24
    版主
  • 两个方法都是我要的,呵呵,先谢了

    试试去

     

    2008年4月11日 9:45