您的问题似乎不完整,您是想询问关于C语言编程的某个具体问题吗?比如C语言的语法、编程技巧、项目开发等。请提供更具体的信息,这样我才能给出更准确的回答。

2026-03-27 00:161阅读0评论SEO问题
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计653个文字,预计阅读时间需要3分钟。

您的问题似乎不完整,您是想询问关于C语言编程的某个具体问题吗?比如C语言的语法、编程技巧、项目开发等。请提供更具体的信息,这样我才能给出更准确的回答。

目录

一、利用VS的补充程序快速继承IList

二、实现必需的成员,使用可绑定数据源的控制

我们需要实现IList接口的类作为数据源,具有多种方法,例如使用ArrayList或List泛型。

目录
  • 一、利用VS的修补程序快速继承IList
  • 二、实现必须的成员

使用可以绑定数据源的控件我们需要有实现了IList接口的类作为数据源,我们有很多的方法,比如使用ArrayList或者List的泛型类都是很方便的,或者不怕麻烦的索性直接上DataTable。
但我们也许想实现一个专用于某个自己定义的对象的list类,这样其他类想错误的加入这个list都不可能了。

一、利用VS的修补程序快速继承IList

假定我有一个Creature的类,如果我们直接在上面加上接口的继承,则会出现报错提示,如下图:

说明,这些接口成员都是必须实现的。
我们来一一实现,其实也不必要,因为我们只是借用它的接口让Creature类成为一个可以充当数据源DataSource的类。

我们点击最下面的显示可能的修补程序(Alt+Enter即可),然后点预览,可以根据自己的需要修改。

如果不需要特别的修改,基本直接应用即可,只是不能应用到数据源绑定上。表面上看这样这个类就实现了IList接口了,但要用于数据源绑定就必须实现我所列出的5个成员,否则还是不能做为数据源给控件使用。

二、实现必须的成员

#region 做数据绑定必须实现的成员 /// <summary> /// 添加元素必须的方法 /// </summary> /// <param name="value"></param> /// <returns></returns> /// <exception cref="NotImplementedException"></exception> public int Add(object? value) { list.Add(value); return list.Count; //throw new NotImplementedException(); } public int Count { get { return list.Count; } } public object? this[int index] { get { return list[index]; } set { list[index] = value; } } /// <summary> /// 如果要作为DataGridView的数据源,必须实现这个属性 /// </summary> public bool IsReadOnly { get { return false;} } /// <summary> /// 迭代必须的方法 /// </summary> /// <returns></returns> /// <exception cref="NotImplementedException"></exception> public IEnumerator GetEnumerator() { return list.GetEnumerator(); //throw new NotImplementedException(); } #endregion

我们来看看效果:

这里我们测试了三种绑定数据源的控件,分别是ListBox,ComboBox,DataGridView ,没有发现任何问题,是不是特别的容易!

到此这篇关于C#快速实现IList非泛型类接口的自定义类作为数据源的文章就介绍到这了,更多相关C# IList数据源内容请搜索自由互联以前的文章或继续浏览下面的相关文章希望大家以后多多支持自由互联!

您的问题似乎不完整,您是想询问关于C语言编程的某个具体问题吗?比如C语言的语法、编程技巧、项目开发等。请提供更具体的信息,这样我才能给出更准确的回答。

标签:自定义

本文共计653个文字,预计阅读时间需要3分钟。

您的问题似乎不完整,您是想询问关于C语言编程的某个具体问题吗?比如C语言的语法、编程技巧、项目开发等。请提供更具体的信息,这样我才能给出更准确的回答。

目录

一、利用VS的补充程序快速继承IList

二、实现必需的成员,使用可绑定数据源的控制

我们需要实现IList接口的类作为数据源,具有多种方法,例如使用ArrayList或List泛型。

目录
  • 一、利用VS的修补程序快速继承IList
  • 二、实现必须的成员

使用可以绑定数据源的控件我们需要有实现了IList接口的类作为数据源,我们有很多的方法,比如使用ArrayList或者List的泛型类都是很方便的,或者不怕麻烦的索性直接上DataTable。
但我们也许想实现一个专用于某个自己定义的对象的list类,这样其他类想错误的加入这个list都不可能了。

一、利用VS的修补程序快速继承IList

假定我有一个Creature的类,如果我们直接在上面加上接口的继承,则会出现报错提示,如下图:

说明,这些接口成员都是必须实现的。
我们来一一实现,其实也不必要,因为我们只是借用它的接口让Creature类成为一个可以充当数据源DataSource的类。

我们点击最下面的显示可能的修补程序(Alt+Enter即可),然后点预览,可以根据自己的需要修改。

如果不需要特别的修改,基本直接应用即可,只是不能应用到数据源绑定上。表面上看这样这个类就实现了IList接口了,但要用于数据源绑定就必须实现我所列出的5个成员,否则还是不能做为数据源给控件使用。

二、实现必须的成员

#region 做数据绑定必须实现的成员 /// <summary> /// 添加元素必须的方法 /// </summary> /// <param name="value"></param> /// <returns></returns> /// <exception cref="NotImplementedException"></exception> public int Add(object? value) { list.Add(value); return list.Count; //throw new NotImplementedException(); } public int Count { get { return list.Count; } } public object? this[int index] { get { return list[index]; } set { list[index] = value; } } /// <summary> /// 如果要作为DataGridView的数据源,必须实现这个属性 /// </summary> public bool IsReadOnly { get { return false;} } /// <summary> /// 迭代必须的方法 /// </summary> /// <returns></returns> /// <exception cref="NotImplementedException"></exception> public IEnumerator GetEnumerator() { return list.GetEnumerator(); //throw new NotImplementedException(); } #endregion

我们来看看效果:

这里我们测试了三种绑定数据源的控件,分别是ListBox,ComboBox,DataGridView ,没有发现任何问题,是不是特别的容易!

到此这篇关于C#快速实现IList非泛型类接口的自定义类作为数据源的文章就介绍到这了,更多相关C# IList数据源内容请搜索自由互联以前的文章或继续浏览下面的相关文章希望大家以后多多支持自由互联!

您的问题似乎不完整,您是想询问关于C语言编程的某个具体问题吗?比如C语言的语法、编程技巧、项目开发等。请提供更具体的信息,这样我才能给出更准确的回答。

标签:自定义