如何使用objectlistview获取列或选定的单元格值?

时间:2015-04-26 06:42:35

标签: c# objectlistview

我想使用objectlistview复制所选列或单元格的内容。 目前,当我使用鼠标绘制选定的矩形并尝试 Ctrl + C 时,它会复制我不想要的所有选定行和列的内容。 我要添加一个序列号作为row.is对象列表视图的标题 通过配置自动允许或处理它。

i want to copy only the selected cells values not the entire rows 如果你看到图像。如果我按 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 

3 个答案:

答案 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代码中:

  • “oListView”是我的ObjectListView对象。
  • oListFill是我的类,用于存储从此Class创建的许多对象的数据值。该类有3个可以设置的属性,并且所有属性都是字符串类型。
  • GroupName,是我在OLVColumn集合编辑器中定义的AspectName,是我的类(String)的3个属性之一。

我无法解决的问题是使用事件处理程序捕获CTRL + C组合键来执行该算法。我尝试的事件处理程序与我过去用于复制到常规ListView的选定子项的剪贴板相同,但在ObjectListView中它不起作用(工作,确定...但是冻结了30秒的UI表)

也许你可以放一个按钮并指定作业执行该程序。

再次,抱歉将我的.NET想法放在C#问题中。