【发布时间】:2016-07-14 01:33:44
【问题描述】:
我喜欢 ObjectListView,但在右键菜单中显示列时遇到了麻烦。
当我通过 objectlistview.Columns.Add(olvcolumn) 方案添加列并设置 olvcolumn.IsVisible = False 时,它只是忽略它并显示列。
即使显示列,它们也不会显示在右键单击列标题菜单中。我可以看到每列的排序和分组,但看不到列。
当我尝试在运行时执行此操作并执行 objectlistview.RebuildColumns() 时,所有列都消失了。
我到底做错了什么?下面是初始化objectlistview的代码(我用的是fastlistview子类)
Me.lvSelectedFiles.HideSelection = False
Me.lvSelectedFiles.FullRowSelect = True
Me.lvSelectedFiles.GridLines = True
Me.lvSelectedFiles.Dock = System.Windows.Forms.DockStyle.Fill
Me.lvSelectedFiles.Location = New System.Drawing.Point(3, 3)
Me.lvSelectedFiles.Name = "lvSelectedFiles"
Me.lvSelectedFiles.Size = New System.Drawing.Size(937, 101)
Me.lvSelectedFiles.TabIndex = 8
Me.lvSelectedFiles.UseCompatibleStateImageBehavior = False
Me.lvSelectedFiles.View = System.Windows.Forms.View.Details
Me.lvSelectedFiles.ShowCommandMenuOnRightClick = True
Me.lvSelectedFiles.ShowFilterMenuOnRightClick = True
Me.lvSelectedFiles.UseAlternatingBackColors = True
Me.lvSelectedFiles.AlternateRowBackColor = SystemColors.Control
Me.lvSelectedFiles.SelectColumnsOnRightClick = True
Me.lvSelectedFiles.SelectColumnsOnRightClickBehaviour = BrightIdeasSoftware.ObjectListView.ColumnSelectBehaviour.Submenu
这是添加一列的逻辑(显示所有代码没有意义,因为我对每一列都做同样的事情)
olvcolhdr = New OLVColumn()
olvcolhdr.Text = "File Type"
olvcolhdr.Width = 150
olvcolhdr.DisplayIndex = 4
olvcolhdr.UseFiltering = True
olvcolhdr.Searchable = True
olvcolhdr.HeaderTextAlign = HorizontalAlignment.Left
olvcolhdr.TextAlign = HorizontalAlignment.Left
olvcolhdr.AspectGetter = Function(orow As Object)
Dim s As FoundFile = DirectCast(orow, FoundFile)
Dim sext As String = FileExtensionInfo(AssocStr.FriendlyDocName, s.Extension)
Return (sext)
End Function
lvSelectedFiles.Columns.Add(olvcolhdr)
olvcolhdr = New OLVColumn()
olvcolhdr.Text = "Size"
olvcolhdr.Width = 75
olvcolhdr.DisplayIndex = 5
olvcolhdr.UseFiltering = True
olvcolhdr.HeaderTextAlign = HorizontalAlignment.Left
olvcolhdr.TextAlign = HorizontalAlignment.Right
olvcolhdr.AspectName = "Length"
olvcolhdr.AspectToStringFormat = "{0:#,##0}"
olvcolhdr.Searchable = True
olvcolhdr.IsVisible = False
lvSelectedFiles.Columns.Add(olvcolhdr)
在上面的两列中,第一列应该是最初可见的,第二列是不可见的。但它们都显示为可见。我不是想将第一列设置为不可见。这总是可见的,没关系...
如果我执行上述操作,然后调用“RebuildColumns()”,所有列都会消失。
确认。请帮忙!
【问题讨论】:
-
我应该明确显示所有列,即使其中一些列设置为 IsVisible = False。并且没有一列出现在右键菜单中。它们确实出现在列表视图中,除非我执行 RebuildColumns(),在这种情况下,一切都消失了。任何地方都没有错误消息。
-
我还注意到在 objectlistview 论坛中提出了同样的问题(似乎不再受支持)。 2015年有人问过,一直没有回复。我敢肯定,可怜的菲利普试图支持这一点已经过度劳累了。这真的是一个很棒的列表视图。我只是遇到了一个奇怪的问题。
-
有人吗?我知道我必须做一些明显的事情,但是我一直在搜索网络,并且看了一天多的演示,但仍然无法让列显示在右键菜单中。如果我生成和使用列属性,它们会显示出来,但由于各种原因,我不能使用生成范例。
标签: asp.net vb.net winforms objectlistview