网路电视精灵-想点就点-任性原则

        今天,我主要向大家展示的是网络电视精灵的一部分精华内容,首先,先向大家介绍网络电视精灵的功能---->它是一个电视,所以必不可少的就是----(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.最后就把所有的频道加载到所有电视台中了

 

posted @ 2016-03-06 17:07  柒陌枫  阅读(321)  评论(0编辑  收藏  举报