Search code examples
c#asp.netclipboard

copy to clipboard in c# asp.net


using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Windows.Forms; // step 1

namespace School.Admin
{

public partial class Test : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
    }

    [STAThreadAttribute] // step 2
    protected void LinkButton1_Click(object sender, EventArgs e)
    {
        Clipboard.SetText("Why it did not copy the words"); //step 3
    }
}

}

the erorr is:

The current thread must be set to Single Thread Apartment (STA) mode before OLE calls can be made. Make sure the Main function is checked


Solution

  • you should use a piece of js

      <html xmlns="http://www.w3.org/1999/xhtml">
        <head runat="server">
            <title>Copy to Clipboard</title>
         <script type="text/javascript">
             function CopyToClipboard(myID) 
             {
                  var copyText = document.getElementById(myID);
    
                  /* Select the text field */
                  copyText.select();
                  copyText.setSelectionRange(0, 99999); /* For mobile devices */
    
                  /* Copy the text inside the text field */
                  document.execCommand("copy");
             }
        </script>
        
        </head>
        <body>
            <form id="form1" runat="server">
            <div>
                <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
                <asp:Button ID="Button1" runat="server" Text="Copy Text Box Text to Clip board" OnClientClick="CopyToClipboard('TextBox1')" />
            </div>
            </form>
        </body>
     </html>