在ObjectListView.repack.Core3 v.2.9.3中添加列时出现错误
System.InvalidCastException:无法将“System.Windows.Forms.ColumnHeader”类型的对象转换为“BrightIdeasSoftware.OLVColumn”类型。
我可以通过指定 BrihgtIdeasSoftware 命名空间来手动添加列。但如何正确做呢?
这似乎是.NET设计器的兼容性问题。使用 .Net Framework 时,GUI 提供了一个自定义列集合编辑器,它可以正确添加
OLVColumn
而不是 ColumnHeader
。该列还应添加到 AllColumns 集合中。
设计师代码:
objectListView1 = new ObjectListView();
columnHeader1 = new ColumnHeader();
((System.ComponentModel.ISupportInitialize)objectListView1).BeginInit();
SuspendLayout();
objectListView1.Columns.AddRange(new ColumnHeader[] { columnHeader1 });
objectListView1.View = View.Details;
private BrightIdeasSoftware.ObjectListView objectListView1;
private ColumnHeader columnHeader1;
OLVColumn 派生自 ColumnHeader。固定版本如下所示:
objectListView1 = new ObjectListView();
columnHeader1 = new OLVColumn(); // fixed
((System.ComponentModel.ISupportInitialize)objectListView1).BeginInit();
SuspendLayout();
objectListView1.AllColumns.Add(this.columnHeader1); // added
objectListView1.Columns.AddRange(new ColumnHeader[] { columnHeader1 });
objectListView1.View = View.Details;
private BrightIdeasSoftware.ObjectListView objectListView1;
private OLVColumn columnHeader1; // fixed
随后使用默认列编辑器,对 OLVColumn 属性进行更改即可。