灵犀一脚C

博客园 首页 联系 订阅 管理

        

 搭建窗体

 

 

 相关代码

 

 

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace 网络电视精灵
{
    //频道父类
    public abstract  class ChannelBase
    {
        public string  ChannelName { get; set; }//频道名称

        public string  Path { get; set; }//频道路径

        public string  Type { get; set; }//频道类型

        public List <TvProgram> Tvlist { get; set; }//该频道上所有节目列表

        public abstract void Fatch();//通过Fatch方法获取该频道上所有节目列表

    }
}

 

 

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Xml;

namespace 网络电视精灵
{
    //频道管理类
    public  class ChannelManager
    {
        //创建一个频道集合
        public List<ChannelBase> list = new List<ChannelBase>();


       //解析FullChannel.xml文件
        public void LoadChannel()
        {
            XmlDocument doc = new XmlDocument();
            doc.Load("files/FullChannels.xml");
            XmlNode root = doc.DocumentElement;

            foreach (XmlNode  item in root.ChildNodes )
            {
                //获取频道的类型
                string type= item ["channelType"].InnerText ;

                //一个item就是一个频道对象
                ChannelBase channel = ChannelFactory.GetInstance(type);

                //频道名称
                channel.ChannelName = item["tvChannel"].InnerText;
                //频道类型
                channel.Type = type;
                //路径
                channel .Path =item ["path"].InnerText ;
                //放到集合中
                list.Add(channel);
            }

        }
    }
}

 

 

 

 

 

 

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace 网络电视精灵
{
    //频道工场
    public  class ChannelFactory
    {
        public static ChannelBase GetInstance(string type)
        {
            ChannelBase channel = null;

            switch (type)
            {
                case "TypeA":
                    channel = new TypeAChannel();
                    break;
                case "TypeB":
                    channel = new TypeBChannel();
                    break;
                default:
                    break;
            }
            return channel;
        }

    }
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace 网络电视精灵
{
    //节目单类
    public  class TvProgram
    {
        public DateTime PlayTime { get; set; }//播出时间

        public string  ShiDuan { get; set; }//早间段,午间段,晚间段

        public string  Name { get; set; }//节目名称

        public string  Path { get; set; }//视频路径


    }
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Xml;

namespace 网络电视精灵
{
    //北京电视台类
    public  class TypeAChannel:ChannelBase 
    {

        public override void Fatch()
        {
            //先判断集合是否为空
            if (Tvlist ==null )
            {
                //如果为空要先占好空间
                Tvlist = new List<TvProgram>();
            }

            //解析北京电视台下的所有节目名单
            XmlDocument doc = new XmlDocument();
            doc.Load(Path);
            //根节点
            XmlNode root = doc.DocumentElement;
            //遍历
            foreach (XmlNode  item in root .ChildNodes )
            {
                //一个item就是一个子节点  就是一个tvProgranTable或者是一个channelName
                if (item .Name =="tvProgramTable")
                {
                    foreach (XmlNode  child in item .ChildNodes )
                    {
                         TvProgram tv = new TvProgram();
                         tv.Name = child["programName"].InnerText;
                         tv.Path = child["path"].InnerText;
                         tv.PlayTime =Convert .ToDateTime ( child["playTime"].InnerText);
                         tv.ShiDuan = child["meridien"].InnerText;
                         //绑定到集合中
                         Tvlist.Add(tv);
                    }
                }
                

            }


        }
    }
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Xml;

namespace 网络电视精灵
{
    //凤凰卫视
    public  class TypeBChannel:ChannelBase 
    {

        public override void Fatch()
        {
            //先判断集合是否为空
            if (Tvlist ==null )
            {
                //如果为空要先占好空间
                Tvlist = new List<TvProgram>();
            }

            ////解析凤凰电视台下的所有节目名单
            XmlDocument doc = new XmlDocument();
            doc.Load(Path);
            //根节点
            XmlNode root = doc.DocumentElement;
            //遍历
            foreach (XmlNode  item in root .ChildNodes )
            {
                //一个item就是一个programlist
                foreach (XmlNode  child in item .ChildNodes )
                {
                    //一个child就是一个Program对象
                    TvProgram tv = new TvProgram();
                    tv.Name = child["name"].InnerText;
                    tv.Path = child["path"].InnerText;
                    tv.PlayTime = Convert.ToDateTime(child ["playTime"].InnerText);
                    //绑定到集合中
                    Tvlist.Add(tv);
                }

            }


        }
    }
}
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace 网络电视精灵
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        //主窗体
        private void menuStrip1_ItemClicked(object sender, ToolStripItemClickedEventArgs e)
        {

        }

        TreeNode no = new TreeNode("我的电视台");
        private void Form1_Load(object sender, EventArgs e)
        {
            
            tvlist.Nodes.Add(no);

            //创建一个所有电台  根节点
            TreeNode root = new TreeNode("所有电视台");
            tvlist.Nodes.Add(root);

            //使用管理类的方法给list填充数据
            ChannelManager channel = new ChannelManager();
            channel.LoadChannel();
            List <ChannelBase> list= channel.list;

            foreach (ChannelBase  item in list )
            {
               
                //MessageBox.Show(item .ChannelName );

                //每个item是一个频道对象
                //绑定到Treeview的 所有电台 的子节点中
                TreeNode tn = new TreeNode(item .ChannelName);
                tn.Tag=item;

                root.Nodes.Add(tn);

            }

        }

        private void tvlist_AfterSelect(object sender, TreeViewEventArgs e)
        {
            //选择性显示右键快捷菜单
            if (tvlist.SelectedNode .Level ==0)
            {
                cms2.Items[0].Visible = false;
                cms2.Items[1].Visible = false;
            }
            else if(tvlist .SelectedNode.Parent .Text =="所有电视台")
            {
                cms2.Items[0].Visible = true;
                cms2.Items[1].Visible = false;
            }
            else if (tvlist .SelectedNode.Parent .Text =="我的电视台")
            {
                cms2.Items[0].Visible = false;
                cms2.Items[1].Visible = true;
            }

          
            //获取选中的节点对象
            TreeNode tn = tvlist.SelectedNode;
            //当选中的节点深度从1开始
            if (tn.Level ==1)
            {
                ChannelBase cb = (ChannelBase)tn.Tag;
                //清空TvList中的数据
                if (cb.Tvlist !=null )
                {
                    cb.Tvlist.Clear();
                }

                //null是不能调用他的任何属性和方法的
                cb.Fatch();
                //绑定到DataGridView控件中
                List <TvProgram> list=cb.Tvlist;
                dgvlist.DataSource = list;
            }

           
        }

        private void dgvlist_CellContentClick(object sender, DataGridViewCellEventArgs e)
        {

        }

        //播放
        private void 播放ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            Form2 f = new Form2();
            f.playPath =dgvlist .SelectedRows [0].Cells ["path"].Value .ToString ();
            f.Show();


        }

        //添加到我的电视台
        private void 加入我的电视台ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            
            //获取选中节点
            TreeNode tn = tvlist.SelectedNode;
            TreeNode one = new TreeNode(tn.Text);
            //添加到  我的电视台  中
            one.Tag = tn.Tag;
            no.Nodes.Add(one);
        }

        //删除我的电视台中的频道
        private void 删除ToolStripMenuItem1_Click(object sender, EventArgs e)
        {
            TreeNode tn = tvlist.SelectedNode;
            tn.Remove();         
        }
    }
}
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace 网络电视精灵
{
    public partial class Form2 : Form
    {
        public Form2()
        {
            InitializeComponent();
        }
        //播放窗体
        public string playPath;

        private void Form2_Load(object sender, EventArgs e)
        {
            //获得播放路径
            Player1.URL = playPath;
        }
    }
}

 

 凤凰电视台

<?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>

 

北京电视台

<?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>D:\Music\麦田守望者 - 在路上 [mqms2].mp3</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>D:\\video\\心灵之约.mp4</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 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>
    

 

posted on 2016-09-06 16:59  灵犀一脚C  阅读(337)  评论(0编辑  收藏  举报