网络电视精灵
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
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 }
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
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>
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
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>
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
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>
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
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/
程序界面图: