MindScape

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::
要求实现ListBox中Item的OwnerDraw,
发现在使用DataBinding时DrawItem 事件中ListBox.Items[e.Index].ToString()返回的都是 DataRowView类型,
第一次尝试:
直接cast成DataRowView,然后用DisplayMember来获取对应列的值

DataRowView drv = listBox1.Items[e.Index] as DataRowView;
String drawText = drv[listBox1.DisplayMember].ToString();

一开始工作的很好,但是后来发现如果当DataSource是一个DataSet object,而DataMember是“TableName.ColumnName”时无法工作。
查找文档发现有一个工具类BindingMemberInfo,可以解析这个字符串。
试了一下果然奏效,
BindingMemberInfo info = new BindingMemberInfo(listBox1.DisplayMember);
String drawText = drv[info.BindingField].ToString();

搞定收工!
posted on 2004-02-05 23:41  Jonny Yu  阅读(677)  评论(0编辑  收藏  举报