[SOLVED] copy to clipboard in c# asp.net

Issue

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>

Answered By – Nima Talebi

Answer Checked By – Marilyn (BugsFixing Volunteer)

Leave a Reply

Your email address will not be published. Required fields are marked *