- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
WPF DataGrid 有一个很好的默认功能,它将选定的单元格复制到剪贴板中,因此我们可以在其他应用程序中使用它。但看起来,复制过程可以在性能方面得到改进,并且我认为粘贴到 Excel 期间还存在某种......错误,需要修复。
<小时/>复制错误的步骤(Excel 使用不正确)
A.1) 从 WPF DataGrid 复制单元格,包含带或不带前导零的文本值(例如“001”;“002”;“1”;“12345”;“ABC”;“0ABC”)
A.2) 将复制的数据粘贴到 Excel 中。预计将保留前导零,但如果可能的话,Excel 会将数值转换为数字数据格式(默认单元格数据类型为“常规”,即可完成此操作)。
<小时/>复制错误的步骤(正确使用 Excel)
B.1) 从 WPF DataGrid 复制单元格,包含带或不带前导零的文本值(例如“001”;“002”;“1”;“12345”;“ABC”;“0ABC”)
B.2) 选择目标 Excel 文件中的所有单元格并将单元格数据类型更改为文本
B.3) 将复制的数据粘贴到 Excel 中。 预计前导零将被保留,但它们也消失了!
<小时/>在 Excel 中查看预期结果的步骤(正确的 Excel 使用)
C.1) 将相同的数据从记事本复制到剪贴板
C.2) 选择目标 Excel 文件中的所有单元格并将单元格数据类型更改为文本
C.3) 将复制的数据粘贴到 Excel 中。预计将保留前导零,现在确实如此。我们可以看到与源数据相同。所见即所得
<小时/>我开始研究剪贴板数据以找出 B.1 和 C.1 之间的差异(我还从 Excel 复制了相同的数据并检查了它......)。我在 Microsoft 的 C# Clipboard Viewer Sample 的帮助下发现了什么:
从 Notepad++ 复制的数据的剪贴板数据格式:
- Text (native)
- UnicodeText (native)
- System.String (autoconvertable)
- Locale (native)
- OEMText (native)
从 WPF DataGrid 复制的数据的剪贴板数据格式:
- HTML Format (native)
- Csv (native)
- Text (native)
- UnicodeText (native)
- System.String (autoconvertable)
从 Excel 复制的数据的剪贴板数据格式:
- EnhancedMetafile (native)
- System.Drawing.Imaging.Metafile (autoconvertable)
- MetaFilePict (native)
- Bitmap (native)
- System.Drawing.Bitmap (autoconvertable)
- System.Windows.Media.Imaging.BitmapSource (autoconvertable)
- Biff12 (native)
- Biff8 (native)
- Biff5 (native)
- SymbolicLink (native)
- DataInterchangeFormat (native)
- XML Spreadsheet (native)
- HTML Format (native)
- Text (native)
- UnicodeText (native)
- System.String (autoconvertable)
- Csv (native)
- Hyperlink (native)
- Rich Text Format (native)
- Embed Source (native)
- Object Descriptor (native)
- Link Source (native)
- Link Source Descriptor (native)
- Link (native)
- Format129 (native)
那么解决步骤 B.3 中的问题的好\最好方法是什么?我现在想知道两个选择:
选项#1
找出如何向wpf datagrid解释,它需要以特定格式将数据设置到剪贴板中。
选项#2
第二个选项是使用我自己的函数处理 Ctrl+C,该函数将运行选定的单元格,与数据网格后面的 View 进行对话,获取正确的数据,附加到字符串生成器并将文本设置到剪贴板。
您认为上述 B.3 的最佳解决方案是什么?
最佳答案
好的。因此,既然我正在谈论从 WPF DataGrid 复制到剪贴板...我研究了 datagrid 的源代码(我应该之前就想到这个想法而不是问这个问题。)
因此,源中复制处理程序的一部分是:
// Supported default formats: Html, Text, UnicodeText and CSV
Collection<string> formats = new Collection<string>(new string[] { DataFormats.Html, DataFormats.Text, DataFormats.UnicodeText, DataFormats.CommaSeparatedValue });
如此简单的答案是:选项#1 是不可能的(换句话说 - 剪贴板的正弦数据格式是硬编码的 - 不可能影响它)。选项#2 没问题。但现在我认为继承 datagrid 并重写方法是有意义的
protected virtual void OnExecutedCopy(ExecutedRoutedEventArgs args)
这将为我的所有情况提供良好的解决方案。
关于WPF DataGrid复制到剪贴板: how to influence data formats in the clipboard?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23648412/
我尝试使用 Clipboard 类粘贴一些复制的对象。 Public Class DogsZoo Public Property Dogs As List(Of Dog) Pub
每当我按下 Ctrl-Shift-C 时,我已经尝试了多种方法强制 xterm(版本 285 和 292)将选择复制到 CLIPBOARD 剪贴板。到目前为止,最有前途的方法是在 ~/.Xresour
我路过一篇关于 Microsoft 的 Clipboard.SetText() 方法的文章: Clipboard.SetText Method (String) 而且我意识到如果字符串为空 (""),
在我的项目中有一个用例:用户单击一个按钮,然后将一些数据复制到剪贴板以进行下一步。 复制的数据与单击的按钮相关,并存储在组件状态中。 我做了一些搜索,并找到了如下潜在的解决方案: function c
我正在使用我的应用程序在我的应用程序中添加“复制到剪贴板”功能。 我使用以下命令: methods: { copyToClipboard () { if (process.env.
我想将 Keith Hill 的 Get-Clipboard 和 Set-Clipboard 的 C# 实现转换为纯 PowerShell 作为 .PSM1 文件。 有没有办法像他在使用剪贴板时在 C
是否有任何工具可以在 Windows 中拥有更强大的剪贴板类型功能? 我正在使用 vs.net 2008(如果它内置了但我不知道?) 我曾经有这个工具,我在剪贴板中创建了许多可以使用快捷方式访问的项目
我正在通过 MSTSC 从笔记本电脑访问桌面。在 RDC session 中,我选择了允许访问打印机和剪贴板本地资源的选项。 我可以从本地笔记本电脑复制并粘贴到我的远程桌面,但无法从远程复制并粘贴到本
我马上就承认,至少可以说,我缺乏 Pascal 经验。因此,我能得到的任何帮助将不胜感激。 :) 作为较大程序的一部分,我需要将字符串变量写入剪贴板。我在 Lazarus(版本 1.0.12)中创建了
使用Windows的Linux子系统(LSW),可以使用clip.exe将数据复制到Windows剪贴板: $ clip.exe /? CLIP Description: Redirects
当用户单击 elm 0.18 中的按钮时,有没有办法将文本从 div 复制到剪贴板? 我看过Clipboard.elm但我不能让它在 elm 0.18 中编译和工作。那么在 elm 0.18 中是否有
有没有办法通过剪贴板将透明图像粘贴到 photoshop? 我尝试使用已注册的“PNG”格式,但似乎 photoshop 不支持它(与 MSOffice 2007 和 GIMP 相反)。使用 CF_D
我从 Vim 外部复制文本。 ⌘V 在其他应用程序中粘贴文本没有问题。在 MacVim 中,它不起作用。 在插入模式下,什么都不显示。在普通模式下,我得到 E353: Nothing in regis
我使用的是 Visio Professional 2003。它运行良好。但是现在当我复制和粘贴任何形状时,它会显示错误“打开剪贴板失败”。之后,我无法更改任何属性或名称。 当我尝试关闭窗口时,它显示警
我正在建立一个UWP定位: 最低版本:14393 目标版本:18362 我的Windows版本是:10.0.19041内部版本19041 我有下面的代码: using Windows.Applicat
我正在用 C# 制作图像查看器。该功能是在 C# 上使用 Clipboard 类的复制和粘贴功能。 并且我成功获取了 BitmapSource 的图像。但它无法检查图像格式(jpeg、png、bmp)
我想在双击标签时复制 Label: self.text 的内容,但以下内容不起作用: 主文件 #!/usr/bin/kivy # -*- coding: utf-8 -*- from kivy.app
我正在使用 CLPB_IMPORT 功能模块将剪贴板获取到内部表。没关系。我正在复制两列 Excel 数据。所以它用分隔符'#'填充表格,比如; 4448#3000 4449#4000 4441#50
我无法复制到 +或 *登记。 :echo has('clipboard')从 Vim 内部返回 0这意味着我没有那个功能标志,我不想重新编译。 我正在运行 Wayland 所以我不能使用 X11 ba
示例:%y+拖到外部+剪贴板。现在,我希望将诸如^\S\+之类的正则表达式的结果发送到外部+ clipboard。如何? 试用1. [失败] :g@^\S\+@y+ 试用2。[失败] :^\S\+y+
我是一名优秀的程序员,十分优秀!