我想使用objectlistview
复制所选列或单元格的内容。
目前,当我使用鼠标绘制选定的矩形并尝试 Ctrl + C 时,它会复制我不想要的所有选定行和列的内容。
我要添加一个序列号作为row.is对象列表视图的标题
通过配置自动允许或处理它。
如果你看到图像。如果我按 CTRL + C 然后 CTRL + V 它会复制所有 像这样的行:
ZAFBGB003YNBGZ6 B003YNBNZ6 $22.61 $22.40 $ -0.21 % -0.93 1 2391817 Good Acceptable MERCHANT 21 10
ZAFBNB003YNBNZ6 B003YNBNZ6 $126.69 $22.40 $ -104.29 % -82.32 1 2391817 New Acceptable MERCHANT 21 10
虽然我想只复制这些值。
2391817
2391817
答案 0 :(得分:0)
如果你知道你想要哪一列,你可以做这样简单的事情:
var olvColumn = olv.GetColumn(6); // whichever column you want
var sb = new StringBuilder();
foreach (object model in olv.SelectedObjects)
sb.AppendLine(olvColumn.GetStringValue(model));
var selectedCellsAsText = sb.ToString();
现在,您可以使用selectedCellsAsText
答案 1 :(得分:0)
正如@Eugene建议的那样,你可以看到列表视图没有选择模式(它不知道你正在使用什么类型的对象),我建议你使用DataGridView
,打印你的对象它并将SelectionMode
从礼节设置为CellSelect
。然后你就可以实现你想要的目标。
答案 2 :(得分:0)
请将此作为参考。目前我只用.NET编写代码,而不是Csharp,但是当我读到这个问题时,我认为我的代码对你有帮助。
Clipboard.Clear()
Dim CurrentSelectedObjects as String = ""
For Each selObject in Me.oListView.SelectedObjects
CurrentSelectedObjects=CurrentSelectedObjects & CType(selObject, oListFill).GroupName & vbNewLine
Next
Clipboard.SetText(CurrentSelectedObjects)
在这个.NET代码中:
我无法解决的问题是使用事件处理程序捕获CTRL + C组合键来执行该算法。我尝试的事件处理程序与我过去用于复制到常规ListView的选定子项的剪贴板相同,但在ObjectListView中它不起作用(工作,确定...但是冻结了30秒的UI表)
也许你可以放一个按钮并指定作业执行该程序。
再次,抱歉将我的.NET想法放在C#问题中。