我的winforms C#应用程序中的剪贴板有问题。我正在尝试将非常长的文本保存到剪贴板(> 140万个字符),并且当使用DataFormats.UnicodeText时,我无法获得相同数量的文本。在特定情况下,我复制1469785个字符,但只能获得502228个字符。如果我将数据标记为DataFormats.WaveAudio,然后在调用Clipboard.GetData()时强制为字符串强制转换,我实际上会返回正确的字符数。仅在使用文本时似乎有一些特殊处理。
这不起作用:
Clipboard.SetData( System.Windows.Forms.DataFormats.UnicodeText, _sb.ToString() );
StringBuilder _sb2 = new StringBuilder( Clipboard.GetData( DataFormats.UnicodeText ) );
虽然这样做:
Clipboard.SetData( System.Windows.Forms.DataFormats.WaveAudio, _sb.ToString() );
StringBuilder _sb2 = new StringBuilder( ( string )Clipboard.GetData( DataFormats.WaveAudio ) );
使用DataFormat.Text也没有帮助,但添加了unicode字符的修改(原因很明显:D)。
我可以在网上找到的所有信息都表示剪贴板大小没有可用内存的限制,那么如何解释呢?是否真的对文本数据格式进行了一些特殊处理?我确定我在这里错过了一些重要的东西,但又是什么?
答案 0 :(得分:2)
没有限制,至少在使用Windows API时是这样。但是,除非您打算让其他应用程序能够粘贴此内容,否则首先使用剪贴板可能没有任何意义。