c#剪贴板返回null,但不能为空

时间:2018-07-20 14:11:23

标签: c# clipboard

我试图获得一个链接,该链接是单击生成的,并粘贴到剪贴板中。我尽我所能找到一切。但是,即使将链接手动粘贴到记事本中,也可以接收到“ null”,但是我总是收到“ null”。

我尝试使用每种定义的Dataformat编写此代码,但是所有内容都返回null。

string clipboardText = Clipboard.GetDataObject().GetData(DataFormats.Text).ToString();

1 个答案:

答案 0 :(得分:1)

来自MSDN:要使用此类,请确保您的Main方法已标记为STAThreadAttribute属性。

示例:

using System.Windows.Forms;  // Need this for console app
namespace ClipboardTest
{
    class Program
    {
        // Without this attribute, will get null
        [STAThreadAttribute]
        static void Main(string[] args)
        {
            try
            {
                var clipboardText = Clipboard.GetDataObject().GetData(DataFormats.Text).ToString();
                Console.WriteLine(clipboardText);
            }
            catch (NullReferenceException ex1)
            {
                // Handle error
            }
            catch (System.Threading.ThreadStateException ex2)
            {
                // Will throw this when:
                // "The current thread is not in single-threaded apartment (STA) mode and the Application.MessageLoop property value is true."
                // Handle error
            }
            catch (System.Runtime.InteropServices.ExternalException ex3)
            {
                // Will throw this if clipboard in use
                // Handle error
            }
        }
    }
}