C#复制到剪贴板

use*_*446 19 c# clipboard

我想在C#中创建一个控制台应用程序,用户将键入内容,让我们说"Dave",然后输出"Name:Dave"并将"Name:Dave"复制到用户剪贴板.那么有没有办法让"Name:"+ Console.ReadLine(); 自动复制到用户剪贴板?

Ale*_*lex 37

您需要引用命名空间:

using System.Windows.Forms;
Run Code Online (Sandbox Code Playgroud)

然后你可以使用:

Clipboard.SetText("Whatever you like");
Run Code Online (Sandbox Code Playgroud)

编辑

这是一个适合我的复制和粘贴解决方案

using System;
using System.Windows.Forms;

namespace ConsoleApplication1
{
    class Program
    {
        [STAThread]
        private static void Main(string[] args)
        {
            Console.WriteLine("Say something and it will be copied to the clipboard");

            var something = Console.ReadLine();

            Clipboard.SetText(something);

            Console.Read();
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

  • [STAThread]属性必须出现在Main方法上,否则这不起作用. (5认同)
  • 这是原始问题中遗漏的CRUCIAL信息. (4认同)
  • 您需要添加对System.Windows.Forms的引用 - 右键单击​​项目,单击"添加引用". (3认同)

Ale*_*ker 14

使用

System.Windows.Forms.Clipboard.SetText(message)
Run Code Online (Sandbox Code Playgroud)

其中message是要复制的字符串.

尽管System.Windows.Forms命名空间是为Windows窗体设计的,但其API中的许多方法甚至在控制台/其他非Winforms应用程序中也具有重要用途.

  • 打了6秒!哈哈 (4认同)

Kha*_*efi 6

1:需要添加引用System.Windows.Forms如下:

右键单击您的项目并Solution Explorer选择Add reference...,然后找到System.Windows.Forms并添加它。(看看这个答案

2:然后您可以System.Windows.Forms使用下面的行添加到您的代码中,并确保将其正确放置在与其他using代码应放置的位置:

using System.Windows.Forms;
Run Code Online (Sandbox Code Playgroud)

3:添加[STAThread]在你的函数的顶部Main,所以它应该是这样的:

[STAThread]
static void Main(string[] args)
{
      ....
}
    
Run Code Online (Sandbox Code Playgroud)

4:Clipboard随意使用,例如:

Clipboard.SetText("Sample Text");
Run Code Online (Sandbox Code Playgroud)