zoukankan      html  css  js  c++  java
  • 网络电视精灵

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

    一.项目框架的搭建:

     

    这个界面需要的控件MenuStrip、TreeView、TabControl、ListView、DataGridView。

    思路分析:

    1.创建对应的类

     

    TvProgram:节目类

     

     //节目单的类
      public   class TvProgram
        {
          //节目播出的时间
            public DateTime  PlayTime { get; set; }
          //时段
            public String  Meridiem { get; set; }
          //节目的名称
            public string  ProgramName { get; set; }
          //视频的路径
            public string  Path { get; set; }
        }
    

     

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

    ChannelBase:频道基类

     //频道类
      public  abstract class ChannelBase
        {
          //定义3个属性和一个方法
          //节目的类型
            public String  Type { get; set; }
          //名字
            public string  ChannelName { get; set; }
          //存放的路径
            public string  Path { get; set; }
          //提供一个用于保存该节目的所有集合
            public List<TvProgram> TvList { get; set; }
          //解析path对应的频道xml文件形成内存中的泛型
            public abstract void Fetch();
        }
    

      

    TypeAChannelA类频道

     

     public  class TypeAChannel:ChannelBase
        {
            public override void Fetch()
            {
                //解析xml文件将xml文件转换到lvlist中
                if (TvList==null)
                {
                    TvList = new List<TvProgram>();
                }
                //将一次性读取内存中数据,形成一个大的字符串
                XmlDocument doc = new XmlDocument();
                doc.Load("files/北京电视台.xml");
                //获取根节点
                XmlNode root = doc.DocumentElement;
                foreach (XmlNode item in root.ChildNodes)
                {
                    if (item.Name.Equals("tvProgramTable"))
                    {
                        //item的子节点里的东西
                        foreach (XmlNode child in item.ChildNodes)
                        {
                            //节目单
                            TvProgram tp = new TvProgram();
                            //节目播出时间
                            tp.PlayTime = Convert.ToDateTime(child["playTime"].InnerText);
                            //时段
                             tp.Meridiem=child["meridien"].InnerText;
                            //节目名称
                           tp.ProgramName=child["programName"].InnerText;
                            //视频路径
                           tp.Path=child["path"].InnerText;
                            //加载到tvlist中
                           TvList.Add(tp);
                        }
                    }
                }
    
    
            }
        }
    

      

     

     

    TypeBChannelB类频道

     

     public  class TypeBChannel:ChannelBase
        {
            public override void Fetch()
            {
                //如果这个listview等于空,就能new 节目单
                if (TvList==null)
                {
                    TvList = new List<TvProgram>();
                }
                XmlDocument doc = new XmlDocument();
                doc.Load("files/凤凰卫视.xml");
                XmlNode root = doc.DocumentElement;
                foreach (XmlNode item in root.ChildNodes)
                {
                    
                        foreach (XmlNode child in item.ChildNodes)
                        {
    
                            TvProgram tp = new TvProgram();
                            tp.PlayTime = Convert.ToDateTime(child["playTime"].InnerText);
                            tp.ProgramName=child["name"].InnerText;
                            tp.Path=child["path"].InnerText;
                            TvList.Add(tp);
                        }
                    
                }
            }
        }
    

      

    ChannelFactory:工厂类

     //工厂类
        public class ChannelFactory
        {
            public static ChannelBase createChannel(string Type) 
            {
                ChannelBase channel = null;
                switch (Type)
    	     {
            case"TypeA":
                     channel = new TypeAChannel();
            break;
    
            case "TypeB":
            channel = new TypeBChannel();
            break;
            
    	   }
                return channel;
            }
        }
    

    Mian窗体

      public partial class FrmMain : Form
        {
            public FrmMain()
            {
                InitializeComponent();
            }
            //解析北京电视台的节目单
            public void InitDataToTreeview()
            {
                manager.ReadXmlToList();
                List<ChannelBase> list = manager.FullChannels;
                foreach (ChannelBase item in list)
                {
                    //每循环一次代表一个频道对item
                    TreeNode tn = new TreeNode();
                    tn.Text = item.ChannelName;
                    tn.Tag = item;
                    tn2.Nodes.Add(tn);
                    //MessageBox.Show(item.ChannelName);
                }
            }
            //管理
            ChannelManager manager = new ChannelManager();
            //本身为null
            TreeNode tn2;
            private void FrmMain_Load(object sender, EventArgs e)
            {
                TreeNode tn1 = new TreeNode("我的电视台");
                tn2 = new TreeNode("所有电视台");
                tvList.Nodes.Add(tn1);
                tvList.Nodes.Add(tn2);
    
                #region 之前节点加载的方法
                ////添加节点
                //TreeNode tn = new TreeNode("我的电视台");
                //tvList.Nodes.Add(tn);
                //TreeNode te = new TreeNode("所有电视台");
                //tvList.Nodes.Add(te);
                ////添加tn子节点
                //TreeNode bj = new TreeNode("北京电视台");
                //te.Nodes.Add(bj);
                //TreeNode fh = new TreeNode("蜂huandianshit"); 
                #endregion
    
    
    
              //解析电视台的节目单
                InitDataToTreeview();
                //构造根节点==Tvlist
               
               
            }
    
            private void msList_ItemClicked(object sender, ToolStripItemClickedEventArgs e)
            {
    
            }
    
            private void tvList_AfterSelect(object sender, TreeViewEventArgs e)
            {
                //获取Tag的节点
                TreeNode tn= tvList.SelectedNode;
                
                ChannelBase ChannelBase = (ChannelBase)tn.Tag;
                if (tn.Level==1)
                {
                    ChannelBase.Fetch();
                    List <TvProgram> list= ChannelBase.TvList;
                    DgvList.DataSource = list;
                }
            }
        }
    

     还需要在添加files文件因为上边的的代码有在TypeABChannel的lei中要将xml文件转为集合里

    FullChannels.xml

    <?xml version="1.0" encoding="utf-8" ?>
    <TVChannels>
    	<Channel>
    		<channelType>TypeA</channelType> <!--频道编号-->
    		<tvChannel>北京电视台</tvChannel> <!--频道名称-->
    		<path>files/北京电视台.xml</path>           <!--频道对应XML文件的本地路径-->
    	</Channel>
    	<Channel>
    		<channelType>TypeB</channelType>
    		<tvChannel>凤凰卫视</tvChannel>
    		<path>files/凤凰卫视.xml</path>
    	</Channel>
    </TVChannels>
    	
    

      北京电视台.xml

    <?xml version="1.0" encoding="utf-8" ?>
    <typeA version =" 1.0">
        <channelName>北京电视台</channelName>
    	<tvProgramTable>
    		<tvProgram>
    			<playTime>2009-9-29 06:02</playTime> <!--节目播出时间-->
    			<meridien>早间档</meridien> <!--时段-->
    		       
    			<programName>重播:国际双行线</programName> <!--节目名称-->
    			<path>c:a.wma</path>         <!--视频路径-->
    		</tvProgram>
    <tvProgram>
    			<playTime>2009-9-29 07:00</playTime> <!--节目播出时间-->
    			<meridien>早间档</meridien> <!--时段-->
    		       
    			<programName>北京您早</programName> <!--节目名称-->
    			<path>C:New Stories (Highway Blues).wma</path>         <!--视频路径-->
    		</tvProgram>
    		<tvProgram>
    			<playTime>2009-9-29 09:02</playTime> <!--节目播出时间-->
    			<meridien>早间档</meridien> <!--时段-->
    		       
    			<programName>重播《红星剧场》32集剧:勇者无敌(31)</programName> <!--节目名称-->
    			<path>**</path>         <!--视频路径-->
    		</tvProgram>
    		<tvProgram>
    			<playTime>2009-9-29 09:58</playTime>
    			
    			<meridien>早间档</meridien>
    			<programName>重播《红星剧场》32集剧:勇者无敌(32)</programName>
    			<path>**</path>
    		</tvProgram>
    		<tvProgram>
    			<playTime>2009-9-29 11:15</playTime>
    			
    			<meridien>午间档</meridien>
    			<programName>重播:专题片:我爱你,中国(14)</programName>
    			<path>**</path>
    		</tvProgram>
    		<tvProgram>
    			<playTime>2009-9-29 11:58</playTime>
    			
    			<meridien>午间档</meridien>
    			<programName>身边</programName>
    			<path>**</path>
    		</tvProgram>
    		<tvProgram>
    			<playTime>2009-9-29 12:30</playTime>
    			
    			<meridien>午间档</meridien>
    			<programName>特别关注</programName>
    			<path>**</path>
    		</tvProgram>
    		<tvProgram>
    			<playTime>2009-9-29 13:05</playTime>
    			
    			<meridien>午间档</meridien>
    			<programName>天下天天谈</programName>
    			<path>**</path>
    		</tvProgram>
    		<tvProgram>
    			<playTime>2009-9-29 13:40</playTime>
    			
    			<meridien>午间档</meridien>
    			<programName>《玫瑰剧场》55集剧:闯关东中篇(21)</programName>
    			<path>**</path>
    		</tvProgram>
    		<tvProgram>
    			<playTime>2009-9-29 14:32</playTime>
    			
    			<meridien>午间档</meridien>
    			<programName>《玫瑰剧场》55集剧:闯关东中篇(22)</programName>
    			<path>**</path>
    		</tvProgram>
    		<tvProgram>
    			<playTime>2009-9-29 15:27</playTime>
    			
    			<meridien>下午档</meridien>
    			<programName>《玫瑰剧场》55集剧:闯关东中篇(23)</programName>
    			<path>**</path>
    		</tvProgram>
    		<tvProgram>
    			<playTime>2009-9-29 16:19</playTime>
    			
    			<meridien>下午档</meridien>
    			<programName>《玫瑰剧场》55集剧:闯关东中篇(24)</programName>
    			<path>**</path>
    		</tvProgram>
    		<tvProgram>
    			<playTime>2009-9-29 17:31</playTime>
    			
    			<meridien>下午档</meridien>
    			<programName>法治进行时</programName>
    			<path>**</path>
    		</tvProgram>
    		<tvProgram>
    			<playTime>2009-9-29 18:00</playTime>
    			
    			<meridien>晚间档</meridien>
    			<programName>新闻晚高峰</programName>
    			<path>**</path>
    		</tvProgram>
    		<tvProgram>
    			<playTime>2009-9-29 18:30</playTime>
    			
    			<meridien>晚间档</meridien>
    			<programName>北京新闻</programName>
    			<path>**</path>
    		</tvProgram>
    		<tvProgram>
    			<playTime>2009-9-29 18:56</playTime>
    			
    			<meridien>晚间档</meridien>
    			<programName>天气预报</programName>
    			<path>**</path>
    		</tvProgram>
    		<tvProgram>
    			<playTime>2009-9-29 19:00</playTime>
    			
    			<meridien>晚间档</meridien>
    			<programName>转播CCTV新闻联播</programName>
    			<path>**</path>
    		</tvProgram>
    		<tvProgram>
    			<playTime>2009-9-29 19:31</playTime>
    			
    			<meridien>晚间档</meridien>
    			<programName>看气象</programName>
    			<path>**</path>
    		</tvProgram>
    		<tvProgram>
    			<playTime>2009-9-29 19:40</playTime>
    			
    			<meridien>晚间档</meridien>
    			<programName>专题片:我爱你,中国(15)</programName>
    			<path>**</path>
    		</tvProgram>
    		<tvProgram>
    			<playTime>2009-9-29 20:22</playTime>
    			
    			<meridien>晚间档</meridien>
    			<programName>《爸妈都是老党员》首播庆典</programName>
    			<path>**</path>
    		</tvProgram>
    		<tvProgram>
    			<playTime>2009-9-29 21:21</playTime>
    			
    			<meridien>晚间档</meridien>
    			<programName>《红星剧场》38集剧:咱爸咱妈六十年(1)</programName>
    			<path>**</path>
    		</tvProgram>
    		<tvProgram>
    			<playTime>2009-9-29 23:25</playTime>
    			
    			<meridien>晚间档</meridien>
    			<programName>重播文艺:花样年华歌舞大赛(5)</programName>
    			<path>**</path>
    		</tvProgram>
    	</tvProgramTable>
    </typeA>
    

    凤凰卫视.xml

    <?xml version="1.0" encoding="utf-8" ?>
    <typeB version =" 1.0">
    	<ProgramList>
    		<Program>
    			<playTime>2009-9-29 01:30</playTime>  <!--播出时间-->
    		
    			<name>简单工厂模式</name>          <!--节目名称-->
    			<path>D:简单工厂模式.wmv</path>          <!--节目视频的本地路径-->
    		</Program>
    		<Program>
    			<playTime>2009-9-29 02:10</playTime>  <!--播出时间-->
    		
    			<name>非凡人物论成功(713)</name>          <!--节目名称-->
    			<path>**</path>          <!--节目视频的本地路径-->
    		</Program>
    		<Program>
    			<playTime>2009-9-29 02:15</playTime>  <!--播出时间-->
    		
    			<name>有报天天读(28/09/09) </name>          <!--节目名称-->
    			<path>**</path>          <!--节目视频的本地路径-->
    		</Program>
    		<Program>
    			<playTime>2009-9-29 02:40</playTime>  <!--播出时间-->
    		
    			<name>娱乐大风暴(682) </name>          <!--节目名称-->
    			<path>**</path>          <!--节目视频的本地路径-->
    		</Program>
    		<Program>
    			<playTime>2009-9-29 03:15</playTime>  <!--播出时间-->
    		
    			<name>上海新长宁集团特约之2009中华小姐环球大赛-美丽前奏(41) </name>          <!--节目名称-->
    			<path>**</path>          <!--节目视频的本地路径-->
    		</Program>
    		<Program>
    			<playTime>2009-9-29 03:20</playTime>  <!--播出时间-->
    		
    			<name>完全时尚手册:天桥云裳(632)  </name>          <!--节目名称-->
    			<path>**</path>          <!--节目视频的本地路径-->
    		</Program>
    		<Program>
    			<playTime>2009-9-29 03:40</playTime>  <!--播出时间-->
    		
    			<name>东风康明斯凤凰冲击播:天力士特约之今日看世界(39)  </name>          <!--节目名称-->
    			<path>**</path>          <!--节目视频的本地路径-->
    		</Program>
    		<Program>
    			<playTime>2009-9-29 04:25</playTime>  <!--播出时间-->
    		
    			<name>音乐中国风(442)  </name>          <!--节目名称-->
    			<path>**</path>          <!--节目视频的本地路径-->
    		</Program>
    		<Program>
    			<playTime>2009-9-29 04:35</playTime>  <!--播出时间-->
    		
    			<name>维维健康新概念(193) </name>          <!--节目名称-->
    			<path>**</path>          <!--节目视频的本地路径-->
    		</Program>
    		<Program>
    			<playTime>2009-9-29 04:40</playTime>  <!--播出时间-->
    		
    			<name>红牛凤凰全球连线(28/09/09) </name>          <!--节目名称-->
    			<path>**</path>          <!--节目视频的本地路径-->
    		</Program>
    		<Program>
    			<playTime>2009-9-29 05:05</playTime>  <!--播出时间-->
    		
    			<name>红云红河时事开讲(28/09/09)  </name>          <!--节目名称-->
    			<path>**</path>          <!--节目视频的本地路径-->
    		</Program>
    		<Program>
    			<playTime>2009-9-29 05:30</playTime>  <!--播出时间-->
    		
    			<name>别巡检调查队(34)(R) </name>          <!--节目名称-->
    			<path>**</path>          <!--节目视频的本地路径-->
    		</Program>
    	</ProgramList>
    </typeB>
    

     未完待续......请等待...... 

     

     

      

     

     

      

     

  • 相关阅读:
    Json对象与Json字符串互转(4种转换方式)
    Web.config配置文件详解
    jQuery BlockUI Plugin Demo 6(Options)
    jQuery BlockUI Plugin Demo 5(Simple Modal Dialog Example)
    jQuery BlockUI Plugin Demo 4(Element Blocking Examples)
    jQuery BlockUI Plugin Demo 3(Page Blocking Examples)
    jQuery BlockUI Plugin Demo 2
    <configSections> 位置引起的错误
    关于jQuery的cookies插件2.2.0版设置过期时间的说明
    jQuery插件—获取URL参数
  • 原文地址:https://www.cnblogs.com/yejiaojiao/p/5248254.html
Copyright © 2011-2022 走看看