Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何以System.String[]的形式从剪贴板检索数据_C#_Windows_Clipboard - Fatal编程技术网

C# 如何以System.String[]的形式从剪贴板检索数据

C# 如何以System.String[]的形式从剪贴板检索数据,c#,windows,clipboard,C#,Windows,Clipboard,当我从应用程序中复制数据时,我编写了一个简单的C#脚本来检查它的类型。显然(我也预料到),这是一个字符串数组: IDataObject data = Clipboard.GetDataObject(); Console.WriteLine(data.GetFormats(true)); // writes "System.String[]" 现在当我提取数据时 object o = data.GetData( "System.String[]" );

当我从应用程序中复制数据时,我编写了一个简单的C#脚本来检查它的类型。显然(我也预料到),这是一个字符串数组:

       IDataObject data = Clipboard.GetDataObject();
       Console.WriteLine(data.GetFormats(true)); // writes "System.String[]"
现在当我提取数据时

      object o = data.GetData( "System.String[]" );
结果对象保持为空


为什么??如何提取数据?

您不应该将CLR类型作为参数。GetData的参数只是一个标识符,它可以是任何东西,但有一些是许多程序使用的

您可能要做的是使用文本形式(即字符串)检索数据。请注意,这仅在剪贴板内容的源实际提供了此格式的数据时有效,但大多数情况下,您应该是安全的

而且,由于文本是一种非常常见的格式,所以甚至有一种方便的方法来检索这种格式的文本,称为


编辑:调用GetFormats时返回的字符串[]只是列出所有可用格式的字符串数组。这不是实际的剪贴板数据,它只是告诉您在执行
obj.GetData()
操作时可以使用哪种格式。在调试器中查看该数组,或在foreach中打印它,以查看是否存在类似数组的格式。

不应将CLR类型作为参数。GetData的参数只是一个标识符,它可以是任何东西,但有一些是许多程序使用的

您可能要做的是使用文本形式(即字符串)检索数据。请注意,这仅在剪贴板内容的源实际提供了此格式的数据时有效,但大多数情况下,您应该是安全的

而且,由于文本是一种非常常见的格式,所以甚至有一种方便的方法来检索这种格式的文本,称为

编辑:调用GetFormats时返回的字符串[]只是列出所有可用格式的字符串数组。这不是实际的剪贴板数据,它只是告诉您在执行
obj.GetData()
操作时可以使用哪种格式。在调试器中查看该数组或在foreach中打印它,以查看是否存在类似于数组的格式。

data.GetFormats(true)
by返回剪贴板中存储的数据格式的名称以及剪贴板中这些格式可以转换为的所有数据格式。要获取数据,需要调用要获取的数据格式的
data.GetData(dataFormatName)
。如果要获取所有对象,应执行以下操作:

foreach (var item in data.GetFormats(true))
{
   object o = data.GetData(item);
   // do something with o
}
data.GetFormats(true)
by返回剪贴板中存储的数据格式的名称以及剪贴板中这些格式可以转换为的所有数据格式。要获取数据,需要调用要获取的数据格式的
data.GetData(dataFormatName)
。如果要获取所有对象,应执行以下操作:

foreach (var item in data.GetFormats(true))
{
   object o = data.GetData(item);
   // do something with o
}

应该在我的机器上工作。发布一个片段,展示你是如何将它放在剪贴板上的。应该可以在我的机器上使用。发布一段代码片段,展示如何将其放在剪贴板上。我知道数据是从一系列网格单元复制的。这就是为什么我坚信
String[]
格式。我正在调查为什么复制这些特定单元格不起作用,而其他单元格却起作用。我知道数据是从一系列网格单元格复制的。这就是为什么我坚信
String[]
格式。我正在调查为什么复制这些特定的细胞不起作用,而其他细胞却起作用。