北大青鸟网络电视精灵代码剖析_.NET_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > .NET > 北大青鸟网络电视精灵代码剖析

北大青鸟网络电视精灵代码剖析

 2013/8/21 17:00:48  微冷的雨  博客园  我要评论(0)
  • 摘要:这篇文章的目的主要为了后续工作的使用,在这里对S2深入.NET平台和C#编程中贯穿案例《网络电视精灵》的部分实现代码进行思路剖析。一、项目框架的搭建:我们都知道开发一个项目之前,应该对项目的整体框架进行搭建。或者专业一点称为详细设计。解析来我们就来看下网络电视精灵的大致结构,当然后续的功能可能还需要加入其它类。思路分析:1.创建对应的类TvProgram:节目类该类主要负责定义节目的属性,为后续从xml文件中读取的内容提供存放位置。ChannelBase:频道基类TypeAChannel
  • 标签:代码 网络

class="p0">这篇文章的目的主要为了后续工作的使用,在这里对S2深入.NET平台和C#编程中贯穿案例《网络电视精灵》的部分实现代码进行思路剖析。

  一、项目框架的搭建:

   我们都知道开发一个项目之前,应该对项目的整体框架进行搭建。或者专业一点称为详细设计。解析来我们就来看下网络电视精灵的大致结构,当然后续的功能可能还需要加入其它类。

 思路分析: 

1.创建对应的类

 

TvProgram:节目类

 

该类主要负责定义节目的属性,为后续从xml文件中读取的内容提供存放位置。

 

ChannelBase:频道基类

 

TypeAChannelA类频道

TypeBChannelB类频道

 

ChannelFactory:工厂类

 

 

 

上述四个类主要控制频道信息

 

ChannelManager:频道管理类

 

该类主要作用实质上减轻窗体中的代码量。相当于程序的工具类。

 

2013818

 

任务;加载所有的频道信息,绑定到界面的TreeView

 

核心思路:

 

    1.首先在频道管理类ChannelManager中写一个加载所有频道方法LoadAllChannel;

 

       该方法作用读取FullChannels.xml文件,并且将读取到的内容赋值给ChannelBase          对象。关键的问题就转化成了如何创建一个ChannelBase对象。我们都知道ChannelBase本身是一个抽象类,无法创建实例。由此,我们想到可以通过其子类来创建对象。由于不同子类实例化需要多次new,我们单独写了一个工厂类(ChannelFafactory),来创建子类实例,但是该子类实例存储在父类变量中。赋值完成后,我们需要将频道对象添加到字典中。那么

 

LoadAllChannel方法结束后,字典中就有了XML文档中的数据。也就是我们实现了将

 

本地硬盘上的xml文件中的数据读取到了内容中的一个字典集合中。

 

2.将集合中的数据绑定到TreeView

将字典集合中的数据通过Foreach拆解,每循环一项,都创建一个TreeNode对象。

并且将集合中的属性赋值给节点对应的属性。然后将拼接处的节点添加到TreeView

。这里需要注意的是,如何找到TreeView控件中的【所有电视台】这个节点,因为

我们需要在该节点上添加频道名称。代码如下:

2013821

扩展:DGV绑定List<T>

List<T> list=new  List<T>();

dgv.DataSource=new BindingList<T>(list);

 

任务:1.将频道节目单填充到DataGridView

      2.实现TreeView的右键菜单功能(能添加电台和删除电台)

      3.右键菜单控制

核心思路:

   将频道节目单填充到DataGridView

     1.在对应的频道子类中书写Fetch方法,解析对应的频道xml文件,然后将xml文件中的数据读取到 public List<TvProgram>  TvList { get; set; }中。

    2.将TvList中的数据绑定到DataGridView上

 

实现TreeView的右键菜单功能(能添加电台和删除电台)

  核心思路:

     1.添加电台

 

其实我们在做的事情就是先获取所有电台的某一个电台(北京电视台),然后通过

Tag属性拿到该电台对应的属性,将拆解出来的属性赋值给我的电台下的某一个

节点,由于节点不存在,所以我们要构造出一个节点。然后赋值,赋值完成后,我们就将构造出来的 节点添加到我的电台下就OK。

 

当然,上面的操作仅仅是界面上新增电台的一个假象。程序再次运行时,我们添加的电台并没有保存。所以我们要将选中的电台添加到我的电台(由于我喜欢的电台可能有多个,所以我们定义了一个集合。)集合中。因为我们大家都知道集合中的数据时存储在内存中的,所以我们要向程序下次运行时,显示出我们添加的电台,那么就必须将集合中的数据永久保存。当然我们知道,永久保存数据的方法有很多,在这里我们采取的是使用txt文件的方式,所以我们书写了一个方法来帮我们完成这项工作,sw.WriteLine(“End”)主要为了方便后面对文本文件的读取

归结起来有3点:

  01.在TreeView中添加节点

  02.向集合中添加节点

  03.将集合中数据写入文本文件

删除电台思路与这个差不多!就不赘述了。

右键菜单控制

核心思路:通过Visible属性控制右键菜单的显示和隐藏

 

 

 

 

发表评论
用户名: 匿名