网络电视精灵

 1 using System;
 2 using System.Collections.Generic;
 3 using System.Linq;
 4 using System.Text;
 5 using System.Threading.Tasks;
 6 
 7 namespace Pratice03_05
 8 {
 9     /// <summary>
10     /// TV节目类
11     /// </summary>
12     public class TvProgram
13     {
14         //节目名称
15         public string ProgramName { get; set; }
16         //时间
17         public string Time { get; set; }
18     }
19 }
TV节目类
 1 <?xml version="1.0" encoding="utf-8" ?>
 2 <TVChannels>
 3   <Channel>
 4     <channelType>TypeA</channelType>
 5     <!--频道类型-->
 6     <tvChannel>北京电视台</tvChannel>
 7     <!--频道名称-->
 8     <path>file/北京电视台.xml</path>
 9     <!--频道文件路径-->
10   </Channel>
11   <Channel>
12     <channelType>TypeB</channelType>
13     <tvChannel>广东电视台</tvChannel>
14     <path>file/广东电视台.xml</path>
15   </Channel>
16 </TVChannels>
FullChannels.xml
 1 <typeA version="1.0">
 2     <channelName>北京电视台</channelName>        <!--电视台名称-->
 3     <tvProgramTable>
 4     
 5         <tvProgram>
 6             <playTime>2016-10-10 06:02</playTime><!--节目播出时间-->
 7             <meridien>早间档</meridien><!--时段-->
 8             <programName>重播:天线低低B</programName><!--节目名称-->
 9             <path>c:\A.mp4</path><!--节目视频的本地路径-->
10         </tvProgram>
11     
12     <tvProgram>
13       <playTime>2016-10-10 07:00</playTime>
14       <meridien>早间档</meridien>
15       <programName>重播:新闻联播</programName>
16       <path>c:\B.mp4</path>
17     </tvProgram>
18     
19     <tvProgram>
20       <playTime>2016-10-10 09:00</playTime>
21       <meridien>早间档</meridien>
22       <programName>今日说法</programName>
23       <path>c:\C.mp4</path>
24     </tvProgram>
25     
26     <tvProgram>
27       <playTime>2016-10-10 12:00</playTime>
28       <meridien>午间档</meridien>
29       <programName>新闻联播</programName>
30       <path>c:\D.mp4</path>
31     </tvProgram>
32     
33     </tvProgramTable>
34 </typeA>
北京电视台.xml
 1 <typeB version="1.0">
 2     <channelName>广东电视台</channelName>        <!--电视台名称-->
 3     <tvProgramTable>
 4         <tvProgram>
 5             <playTime>2016-10-10 18:02</playTime><!--节目播出时间-->
 6             <meridien>晚间档</meridien><!--时段-->
 7             <programName>今日头条</programName><!--节目名称-->
 8             <path>c:\A.mp4</path><!--节目视频的本地路径-->
 9         </tvProgram>
10 
11     <tvProgram>
12       <playTime>2016-10-11 19:00</playTime>
13       <!--节目播出时间-->
14       <meridien>晚间档</meridien>
15       <!--时段-->
16       <programName>今日新闻</programName>
17       <!--节目名称-->
18       <path>c:\B.mp4</path>
19       <!--节目视频的本地路径-->
20     </tvProgram>
21 
22     <tvProgram>
23       <playTime>2016-10-11 20:00</playTime>
24       <!--节目播出时间-->
25       <meridien>晚间档</meridien>
26       <!--时段-->
27       <programName>德玛西亚</programName>
28       <!--节目名称-->
29       <path>c:\C.mp4</path>
30       <!--节目视频的本地路径-->
31     </tvProgram>
32 
33     <tvProgram>
34       <playTime>2016-10-11 22:02</playTime>
35       <!--节目播出时间-->
36       <meridien>晚间档</meridien>
37       <!--时段-->
38       <programName>如何补兵</programName>
39       <!--节目名称-->
40       <path>c:\D.mp4</path>
41       <!--节目视频的本地路径-->
42     </tvProgram>
43     
44     </tvProgramTable>
45 </typeB>
广东电视台.xml
  1 using System;
  2 using System.Collections.Generic;
  3 using System.ComponentModel;
  4 using System.Data;
  5 using System.Drawing;
  6 using System.Linq;
  7 using System.Text;
  8 using System.Threading.Tasks;
  9 using System.Windows.Forms;
 10 using System.Xml;
 11 
 12 namespace Pratice03_05
 13 {
 14     public partial class FrmMain : Form
 15     {
 16         public FrmMain()
 17         {
 18             InitializeComponent();
 19             Inital();
 20             ShowTV();
 21             BindBeiJingTvList();
 22             BindGuangDongTvList();
 23         }
 24 
 25         List<TvProgram> BeiJing = new List<TvProgram>();
 26         List<TvProgram> GuangDong = new List<TvProgram>();
 27 
 28         /// <summary>
 29         /// 初始化2个节点
 30         /// </summary>
 31         public void Inital()
 32         {
 33             //清空所有节点
 34             this.tvList.Nodes.Clear();
 35             //添加2个父节点
 36             TreeNode nodeFirst = new TreeNode("我的电视台");
 37             TreeNode nodeSecond = new TreeNode("所有电视台");
 38             this.tvList.Nodes.Add(nodeFirst);
 39             this.tvList.Nodes.Add(nodeSecond);
 40         }
 41 
 42         /// <summary>
 43         /// 根据文件名,获取电视台名称
 44         /// </summary>
 45         /// <param name="path">文件名</param>
 46         /// <returns>电视台名称</returns>
 47         public string BindTV(string path)
 48         {
 49             string channelName = "";
 50             XmlDocument xmlDoc = new XmlDocument();
 51             //加载xml文件
 52             xmlDoc.Load(path);
 53             //获取根节点
 54             XmlElement xmlRoot = xmlDoc.DocumentElement;
 55             foreach (XmlNode node in xmlRoot.ChildNodes)
 56             {
 57                 switch (node.Name)
 58                 {
 59                     case "channelName":
 60                         channelName = node.InnerText;
 61                         break;
 62                 }
 63             }
 64             return channelName;
 65         }
 66 
 67         /// <summary>
 68         /// 绑定电视台
 69         /// </summary>
 70         public void ShowTV()
 71         {
 72             string Beijing = BindTV("北京电视台.xml");
 73             string GuangDong = BindTV("广东电视台.xml");
 74             this.tvList.Nodes[1].Nodes.Add(Beijing);
 75             this.tvList.Nodes[1].Nodes.Add(GuangDong);
 76         }
 77 
 78         /// <summary>
 79         /// 绑定北京电视节目
 80         /// </summary>
 81         public void BindBeiJingTvList()
 82         {
 83             XmlDocument myXml = new XmlDocument();
 84             myXml.Load("北京电视台.xml");
 85             XmlNode node = myXml.DocumentElement;
 86             foreach (XmlNode nod in node.ChildNodes)
 87             {
 88                 switch (nod.Name)
 89                 {
 90                     //选中节目
 91                     case "tvProgramTable":
 92                         //遍历该子节点
 93                         foreach (XmlNode item in nod.ChildNodes)
 94                         {
 95                             TvProgram tv = new TvProgram();
 96                             tv.ProgramName = item["programName"].InnerText;
 97                             tv.Time = item["playTime"].InnerText;
 98                             BeiJing.Add(tv);
 99                         }
100                         break;
101                 }
102             }
103         }
104 
105         /// <summary>
106         /// 绑定广东电视节目
107         /// </summary>
108         public void BindGuangDongTvList()
109         {
110             XmlDocument myXml = new XmlDocument();
111             myXml.Load("广东电视台.xml");
112             XmlNode node = myXml.DocumentElement;
113             foreach (XmlNode nod in node.ChildNodes)
114             {
115                 switch (nod.Name)
116                 {
117                     //选中节目
118                     case "tvProgramTable":
119                         //遍历该子节点
120                         foreach (XmlNode item in nod.ChildNodes)
121                         {
122                             TvProgram tv = new TvProgram();
123                             tv.ProgramName = item["programName"].InnerText;
124                             tv.Time = item["playTime"].InnerText;
125                             GuangDong.Add(tv);
126                         }
127                         break;
128                 }
129             }
130         }
131 
132         /// <summary>
133         /// 选中后右击加入我的电视台
134         /// </summary>
135         /// <param name="sender"></param>
136         /// <param name="e"></param>
137         private void tsmiAdd_Click(object sender, EventArgs e)
138         {
139             //选中的文本
140             string selectText = tvList.SelectedNode.Text;
141             //判断是否有选择
142             if (selectText == null)
143             {
144                 MessageBox.Show("请选中其中一项!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Error);
145                 return;
146             }
147             //简单粗暴的判断是否选中了父节点
148             if (selectText == "我的电视台" || selectText == "所有电视台")
149             {
150                 MessageBox.Show("请勿调皮添加!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Error);
151                 return;
152             }
153             //遍历我的电视台里的子节点
154             foreach (TreeNode tn in tvList.Nodes[0].Nodes)
155             {
156                 if (tn.Text.Equals(selectText))
157                 {
158                     MessageBox.Show("请勿重复添加!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Error);
159                     return;
160                 }
161             }
162             tvList.Nodes[0].Nodes.Add(selectText);
163         }
164 
165         /// <summary>
166         /// 点击删除
167         /// </summary>
168         /// <param name="sender"></param>
169         /// <param name="e"></param>
170         private void tsmiDelete_Click(object sender, EventArgs e)
171         {
172             this.tvList.SelectedNode.Remove();
173         }
174 
175         /// <summary>
176         /// 鼠标点击树状图节点,判断属于哪一个节点
177         /// </summary>
178         /// <param name="sender"></param>
179         /// <param name="e"></param>
180         private void tvList_MouseClick(object sender, MouseEventArgs e)
181         {
182 
183             //判断是否选中“我的电视台”,选中该子节点后,将“删除”可用,“添加”不可用
184             if (tvList.SelectedNode.Parent != null && tvList.SelectedNode.Parent.Text == "我的电视台")
185             {
186                 contextMenuStrip.Items[1].Enabled = true;
187                 contextMenuStrip.Items[0].Enabled = false;
188             }
189             //选中“所有电视台”,则将“删除”不可用,“添加”可用
190             else
191             {
192                 contextMenuStrip.Items[1].Enabled = false;
193                 contextMenuStrip.Items[0].Enabled = true;
194             }
195             //若选中根节点,将右键快捷菜单中选项不能使用
196             if (tvList.SelectedNode.Level == 0)
197             {
198                 contextMenuStrip.Items[1].Enabled = false;
199                 contextMenuStrip.Items[0].Enabled = false;
200             }
201 
202             //根据选中的节点绑定节目
203             if (tvList.SelectedNode.Text.Equals("北京电视台"))
204             {
205                 dgvShow.DataSource = BeiJing;
206             }
207             else if (tvList.SelectedNode.Text.Equals("广东电视台"))
208             {
209                 dgvShow.DataSource = GuangDong;
210             }
211         }
212     }
213 }
主窗体

以为上程序源代码  ↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑

 

程序运行效果视频:

  请移步至 -->http://www.bilibili.com/video/av9897201/

 

程序界面图:

 

posted @ 2017-04-17 00:47  柯南君丶  阅读(126)  评论(0编辑  收藏  举报