ObjectListView.repack.Core3 v.2.9.3添加列报错:类型转换异常求助
ObjectListView添加列时InvalidCastException的正确解决方式
出现System.InvalidCastException: Unable to cast object of type "System.Windows.Forms.ColumnHeader" to type "BrightIdeasSoftware.OLVColumn"错误的核心原因是:ObjectListView要求添加的列必须是其专属的OLVColumn类型,而非WinForms原生的ColumnHeader。以下是几种标准实现方式:
1. 代码层面创建并添加列
直接实例化OLVColumn,配置属性后加入ObjectListView的列集合:
using BrightIdeasSoftware; // 创建对应数据源属性的OLVColumn var userNameColumn = new OLVColumn("用户名", "UserName") { Width = 180 }; var emailColumn = new OLVColumn("邮箱", "Email") { Width = 220 }; // 添加到ObjectListView控件 myObjectListView.Columns.Add(userNameColumn); myObjectListView.Columns.Add(emailColumn);
注:构造函数第二个参数为AspectName,需与数据源对象的属性名完全匹配,用于自动绑定数据。
2. 设计器可视化添加列
若使用Visual Studio设计器:
- 选中窗体上的ObjectListView控件
- 在属性面板找到
Columns属性,点击右侧的编辑按钮 - 在弹出的列编辑器中,点击「添加」按钮,此时创建的默认就是
OLVColumn(确保设计器已正确加载ObjectListView组件) - 分别设置每列的
Text(界面显示标题)、AspectName(绑定的数据源属性名)等关键属性
3. 关键注意事项
- 禁止将原生
ColumnHeader对象直接添加到ObjectListView的列集合,这会触发类型转换异常 - 若从原生ListView迁移,需将所有原有
ColumnHeader替换为OLVColumn - 确保项目已正确引用ObjectListView.repack.Core3 v2.9.3,且代码文件顶部添加了
using BrightIdeasSoftware;命名空间引用
内容的提问来源于stack exchange,提问作者А.Терентьев
相关产品推荐
相关产品推荐

