搭建窗体
相关代码
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>