扫一扫
分享文章到微信
扫一扫
关注官方公众号
至顶头条
为该控件编写代码的第一步是创建项目和相应的起始类。在本例中,我首先创建一个新 Windows 控件库,然后删除默认的 UserControl 类,并用一个从 TreeView 控件继承的新类来代替它:
从这时起,我将设计一个可以放入到窗体中的控件,并使其具有常规的 TreeView 的外观和功能。下一步是开始添加旨在处理在 TreeView 中加入的新功能所需的代码,即数据绑定和分组数据。
添加 DataSource 属性我的新控件的所有功能都很重要,但构建复杂数据绑定控件的两个关键问题是处理 DataSource 属性和从数据源的每个对象中检索单个项目。
创建属性例程首先,任何用于实现复杂数据绑定的控件都需要实现一个 DataSource 属性例程,并保持适当的成员变量:
Private m_DataSource As Object
|
可用作复杂数据绑定数据源的对象通常都支持,该接口将数据公开为对象集合,并提供若干有用属性,如 Count。我的新 TreeView 控件要求在其绑定中使用一个支持 IList 的对象,但使用另一个接口也可以,因为它提供了一个获取 IList 对象的简便方法 (GetList)。当设置 DataSource 属性后,我首先确定是否提供了有效的对象,即一个支持 IList 或 IListSource 的对象。我真正想要的是 IList,因此如果对象仅支持 IListSource(例如 DataTable),那么我将使用该接口的 GetList() 方法获得正确的对象。
某些实现 IListSource 的对象(如 DataSet)实际上包含多个由 ContainsListCollection 属性表示的列表。如果该属性为 True,则 GetList 将返回一个表示列表(包含多个列表)的 IList 对象。在我的示例中,我决定支持直接连接到 IList 对象或仅包含一个 IList 对象的 IListSource 对象,并忽略需要附加工作来指定数据源的对象,如 DataSet。
注意:如果要支持此类对象(DataSet 或与之类似的对象),您可以再添加一个属性(如 DataMember)来指定用于绑定的特定子列表。
如果提供的数据源有效,则最终结果是创建的实例 (cm = Me.BindingContext(Value))。由于该实例将用于访问基础数据源、对象属性和位置信息,因此被存储在局部变量中。
如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。
现场直击|2021世界人工智能大会
直击5G创新地带,就在2021MWC上海
5G已至 转型当时——服务提供商如何把握转型的绝佳时机
寻找自己的Flag
华为开发者大会2020(Cloud)- 科技行者