对于我当前正在从事的项目,必须在一定程度上使用剪贴板。
我需要什么:
将文本和一些其他特定于应用程序的数据保存到剪贴板。文本应该可以在其他应用程序中与CTRL + V一起使用,而通常应省略应用程序数据,因为它主要用于引用内容(如引号等)
我尝试过的事情:
将自定义对象复制到剪贴板并覆盖ToString-Method,认为它可以工作还有些天真
[Serializable]
public class TestData {
public string txt;
public string additionalStuffs;
public override string ToString() {
return txt;
}
}
Clipboard.SetData( "TestData", new TestData() { txt = "This is a text", additionalStuffs = "Stuffs" } );
我现在需要将txt作为字符串粘贴到其他应用程序中,而忽略其他数据,除非将其发布到我的应用程序中。为了便于用户阅读和使用。
你们中的任何人都可以解释我如何解决这个问题吗?甚至有办法做到吗?
答案 0 :(得分:2)
好的,使用文档进行了更多的反复试验,我实际上找到了解决方案。
对于每个有相同问题的人:诀窍是使用如下所示的DataObject:
[Serializable]
public class TestData {
public string Whatever;
}
IDataObject dataObject = new DataObject();
dataObject.SetData( "System.String", "Test" );
dataObject.SetData( "Text", "Test" );
dataObject.SetData( "UnicodeText", "Test" );
dataObject.SetData( "OEMText", "Test" );
dataObject.SetData( "TestData", new TestData() { Whatever = "NONONONONO", } );
Clipboard.SetDataObject( dataObject );
使用此构造,您可以使用多个“ DataTypes”设置文本,因此无论您要粘贴到哪个应用程序,都需要提供一个值。这样,粘贴时仅显示文本,而隐藏在内部也是附加数据。
很抱歉,没有研究到最后就提出这个问题。祝你有美好的一天!