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


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

  • 相关阅读:
    server 2012 r2 配置
    在线流媒体nginx/Windows解决方案
    ECS上配置FTP Filezilla
    新项目扫雷专贴 备忘录
    如何解决 Windows 实例出现身份验证错误及更正 CredSSP
    win10 再次重装系统
    SAI窗口无法移动
    无法将分支 master 发布到远程 origin,因为远程存储库中已存在具有同一名称的分支
    遇到技嘉 Gigabyte UEFI DualBIOS问题
    dnsunlocker解决
  • 原文地址:https://www.cnblogs.com/wth1129/p/5247922.html
Copyright © 2020-2023  润新知