网路电视精灵-想点就点-任性原则
今天,我主要向大家展示的是网络电视精灵的一部分精华内容,首先,先向大家介绍网络电视精灵的功能---->它是一个电视,所以必不可少的就是----(1)播放功能,当然还有--(2)换频道--(3)节目单的更新---(4)分组管理(如:添加自己喜爱的频道到我的电视台)。。。。。。。。。。。
那么我们就来看一下吧
1.首先我们先搭建一个窗体 如图所示:
2.然后创建几个辅助类来保存信息
如图:
3. 接下来就是写几个类的属性--方法
1.节目类:
public class Tvprogrammer { //时间 public DateTime Time { get; set; } //时段(早间档) public string shiduan { get; set; }
//名字 public string Name { get; set; } //视频路径 public string Path { get; set; } }
2.频道父类(抽象类):
public abstract class ChannelBase { //父类 public string ChannelName { get; set; } public string Path { get; set; } public List<Tvprogrammer> Tvgram { get; set; } public abstract void Fetch(); }
3.子类 方法重写
public class TVAchannel:ChannelBase { public override void Fetch() { } }
4.工厂类:提供方法来判定用户选择的是哪个频道(返回值类型是父类,且为静态的,一般带一个参数)
public class channelFactory { public static ChannelBase getInfo(string type) { ChannelBase cb = null; switch (type) { case "typeA": cb = new TVAchannel(); break; case "typeB": cb = new TVBchannel(); break; } return cb; } }
5.然后还需要一个频道管理类来解析xml文件---储存到泛型集合中
下面分别是xml文件存储的数据和频道管理类提供的方法
<?xml version="1.0" encoding="utf-8" ?> <chnnels> <channel> <channelType>typeA</channelType> <channelName>北京电视台</channelName> <path>北京电视台.xml</path> </channel> <channel> <channelType>typeB</channelType> <channelName>凤凰卫视</channelName> <path>凤凰卫视.xml</path> </channel> </chnnels>
public class channelManager { //保存所有频道 public List<ChannelBase> FullChannel { get; set; } public channelManager() { FullChannel = new List<ChannelBase>(); } //将xml 文件解析到泛型集合中 public void GetxmlToList() { XmlDocument doc1 = new XmlDocument(); doc1.Load("channel.xml"); XmlNode root = doc1.DocumentElement; foreach (XmlNode item in root.ChildNodes) { //接受xml中的类型 string type = item["channelType"].InnerText; ChannelBase channel = channelFactory.getInfo(type); channel.ChannelName = item["channelName"].InnerText; channel.Path = item["path"].InnerText; //把整个赋值给FullChannel FullChannel.Add(channel); } } }
6.最后在主窗体的load事件中来调用方法
private void FrmMain_Load(object sender, EventArgs e) { //new出游离的TreeNode节点,绑定到TreeView控件上 TreeNode tr = new TreeNode("我的电视台"); TreeNode tr1 = new TreeNode("所有电视台"); tvList.Nodes.Add(tr); tvList.Nodes.Add(tr1); tr.Nodes.Add("凤凰卫视"); //调用频道管理类,读出xml频道的数据绑定到reeView控件上 channelManager man = new channelManager(); man.GetxmlToList(); List<ChannelBase> list = man.FullChannel; foreach (ChannelBase item in list) { tr1.Nodes.Add(item.ChannelName); } }
7.最后就把所有的频道加载到所有电视台中了