亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

C#暢談“網絡電視”

2019-11-14 15:55:55
字體:
來源:轉載
供稿:網友

C#暢談“網絡電視”

以上是大家比較喜歡的網絡電視軟件,例如:PPTV,BOX央視影音,PPS等。

今天我就和大家來聊一下簡單的“網絡電視”。雖然和上邊的軟件沒發比,但是正在向著這個目標努力中……

 

一開始我在做這個項目的時候思路很茫然,就像地上的一團線團一樣。

我需要用到哪些方法?需要建幾個類?

拿到一個項目的時候首先要分析我想大家都知道

主界面如下:

既然是網絡電視,那么肯定有很多的頻道供用戶去選擇。所以肯定有頻道類,要定義一個頻道的基類(ChannelBase),讓所有頻道類繼承這個基類,提高抽象程度會更方便一些。

頻道管理類(ChannelManager)也是必不可少的,要不怎么去管理那么多的頻道呢!

選擇頻道,頻道下面就會有節目,節目類也隨之而來。

這里我定義了兩個頻道類(TypeAChannel類,TypeBChannel類),關系如下:

1 public class TypeAChannel:ChannelBase
1 public class TypeBChannel:ChannelBase

 

頻道基類(ChannelBase)代碼如下:

 1 //頻道基類 2     public abstract class ChannelBase 3     { 4         //頻道名稱 5         public string ChannelName { get; set; } 6         //頻道路徑 7         public string Path { get; set; } 8         //節目列表,該頻道上的所有節目列表 9         public List<TvPRogram> TvList { get; set; }10         //獲取頻道列表:通過Fetch方法獲取該頻道擁有的所有節目列表11         public abstract void Fetch();12         //頻道類型13         public string Type { get; set; }14     }

 

節目類(TvProgram)代碼如下:

 1 //節目類 2     public class TvProgram 3     { 4         //播出時間 5         public DateTime PlayTime { get; set; } 6         //早間檔,午間檔,晚間檔 7         public string Shiduan { get; set; } 8         //節目名稱 9         public string ProgramName { get; set; }10         //視頻路徑11         public string Path { get; set; }12     }

 

接下來可以著手綁定treeView了。

首先先添加根節點:

 1         private void LoadRootNode()  2         { 3             TreeNode mineNode = new TreeNode(); 4             mineNode.Text = "我的電視臺"; 5  6             allNode.Text = "所有電視臺"; 7  8             treeView1.Nodes.Add(mineNode); 9             treeView1.Nodes.Add(allNode);10         }

 

treeView里代碼如下:

 1 private void treeView1_AfterSelect(object sender, TreeViewEventArgs e) 2         { 3             TreeNode selectNode = treeView1.SelectedNode; 4             if (selectNode.Level==1 && selectNode.Parent.Text=="所有電視臺") 5             { 6                 ChannelBase channel = (ChannelBase)selectNode.Tag; 7                 channel.Fetch(); 8  9                 List<TvProgram> ProList = channel.TvList;10                 dataGridView1.DataSource = ProList;11             }12         }

 

 

接下來把LoadRootNode()方法在Load中調用一下:

 1 private void Form1_Load(object sender, EventArgs e) 2         { 3             LoadRootNode(); 4             ChannelManager manager = new ChannelManager(); 5             manager.Paresexml(); 6             Dictionary<string,ChannelBase> dic=manager.FullChannel; 7             foreach (var channel in dic.Values) 8             { 9                 TreeNode tn = new TreeNode();10                 tn.Text = channel.ChannelName;11                 tn.Tag = channel;12                 allNode.Nodes.Add(tn);13             }14         }

 

到這里treeView已經綁定完成了,那么我上邊是不是犯了一個小錯誤呢?會導致什么后果?

 

沒錯,相信大家都猜到了,我在調用Fetch()方法之前,節目列表沒有清除,可以用下面的方法:

1                 if (channel.TvList != null)2                 {3                     channel.TvList.Clear();4                 }

 

正確的代碼如下:

 1 private void treeView1_AfterSelect(object sender, TreeViewEventArgs e) 2         { 3             TreeNode selectNode = treeView1.SelectedNode; 4             if (selectNode.Level==1 && selectNode.Parent.Text=="所有電視臺") 5             { 6                 ChannelBase channel = (ChannelBase)selectNode.Tag; 7                 if (channel.TvList != null) 8                 { 9                     channel.TvList.Clear();10                 }11                 channel.Fetch();12 13                 List<TvProgram> ProList = channel.TvList;14                 dataGridView1.DataSource = ProList;15             }16         }

 

頻道管理類:

 1 //頻道管理類 2     public class ChannelManager 3     { 4         public ChannelManager() 5         { 6             fullChannel = new Dictionary<string, ChannelBase>(); 7         } 8  9         private Dictionary<string, ChannelBase> fullChannel = new Dictionary<string, ChannelBase>();10         public Dictionary<string, ChannelBase> FullChannel11         {12             get { return fullChannel; }13             set { fullChannel = value; }14         }15         public void PareseXML() 16         {17             XmlDocument doc = new XmlDocument();18             doc.Load("FullChannels.xml");19             XmlNode root = doc.DocumentElement;20             foreach (XmlNode node in root.ChildNodes)21             {22                 string type = node["channelType"].InnerText;23                 ChannelBase channel = ChannelFactory.CreatChannel(type);24                 channel.ChannelName = node["tvChannel"].InnerText;25                 channel.Path = node["path"].InnerText;26                 channel.Type = type;27 28                 fullChannel.Add(channel.ChannelName,channel);29             }30         }31     }

 

這里列舉一個頻道TypeAChannel類:

 1 //A頻道類 2     public class TypeAChannel:ChannelBase 3     { 4         //多態,覆蓋父類的獲取頻道列表方法 5         public override void Fetch() 6         { 7             XmlDocument doc = new XmlDocument(); 8             doc.Load("北京電視臺.xml"); 9             if (TvList == null)10             {11                 TvList = new List<TvProgram>();12             }13             //獲取根節點14             XmlNode root = doc.DocumentElement;15             foreach (XmlNode item in root.ChildNodes)16             {17                 if (item.Name == "tvProgramTable")18                 {19                     foreach (XmlNode child in item.ChildNodes)20                     {21                         //一個item就是一個tvProgram節點22                         TvProgram program = new TvProgram();23                         program.PlayTime = Convert.ToDateTime(child["playTime"].InnerText);24                         program.Shiduan = child["meridien"].InnerText;25                         program.ProgramName = child["programName"].InnerText;26                         program.Path = child["path"].InnerText;27                         TvList.Add(program);28                     }29                 }30             }31         }32     }

 

頻道TypeBChannel類和TypeAChannel類一樣。

至此基本功能已經完成,那么接下來大家也可以接著制作如下功能:

右鍵我的電視臺下的頻道會只有刪除選項,右鍵所有電視臺會只有加入我的電臺選項。

那么還有提醒功能,就是用戶可以設一個時間點,到時間了會提醒用戶去收看,有興趣的可以研究一下。

 


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产精品吴梦梦| 伊人成人开心激情综合网| 全亚洲最色的网站在线观看| 久久精品电影网| 国内精品视频一区| 久久成人人人人精品欧| 欧美在线免费视频| 欧美一级片一区| 国产精欧美一区二区三区| 亚洲精品v欧美精品v日韩精品| 久久免费精品视频| 韩国国内大量揄拍精品视频| 欧美极品xxxx| 国产精品一区二区久久精品| 欧美成人精品h版在线观看| 日韩免费在线视频| 国产日韩欧美黄色| 国产黑人绿帽在线第一区| 亚洲第一区在线| 91中文在线视频| 美女啪啪无遮挡免费久久网站| 亚洲精品国产精品国产自| 奇米成人av国产一区二区三区| 国产精品专区一| 国产精品露脸av在线| 日韩中文字幕精品| 亚洲国产精品高清久久久| 一本色道久久88综合日韩精品| 国产区亚洲区欧美区| 中文字幕最新精品| 国产成人综合亚洲| 91视频免费在线| 欧美日本中文字幕| 国产精品久久久久久久久久久久| 久久久精品国产网站| 亚洲综合中文字幕在线| 久久久久久久亚洲精品| www.欧美精品一二三区| 欧美激情中文网| 中文字幕亚洲第一| 91av网站在线播放| 欧美成人精品影院| 国产成人在线播放| 精品成人av一区| 国产一区二区三区日韩欧美| 国产九九精品视频| 亚洲国产小视频| 少妇激情综合网| 欧美华人在线视频| 超在线视频97| 久久全球大尺度高清视频| 啊v视频在线一区二区三区| 国产激情久久久久| 亚洲精品视频在线观看视频| 亚洲欧美国内爽妇网| 久久免费视频网站| 精品国内产的精品视频在线观看| 国产精品一区二区久久久| 色综合天天狠天天透天天伊人| 欧美洲成人男女午夜视频| 亚洲在线免费看| 色偷偷av一区二区三区乱| 欧美日韩国产123| 成人亚洲综合色就1024| 91情侣偷在线精品国产| 国产精品亚洲一区二区三区| 久久精品视频中文字幕| 久久精品国产91精品亚洲| 91国自产精品中文字幕亚洲| 成人av电影天堂| 亚洲国产日韩欧美在线图片| 97在线精品国自产拍中文| 色悠久久久久综合先锋影音下载| 成人有码在线播放| 超碰日本道色综合久久综合| 色视频www在线播放国产成人| 色综久久综合桃花网| 午夜精品视频在线| 91精品国产综合久久香蕉的用户体验| 69久久夜色精品国产69乱青草| 日韩成人av网| 97视频com| 中文字幕日韩av| 亚洲最大在线视频| 国产欧美日韩精品在线观看| 亚洲国产精品成人va在线观看| 亚洲最大的网站| 日韩精品免费在线| 欧美日韩国产成人| 97在线精品国自产拍中文| 91久久久久久国产精品| 日韩欧美在线中文字幕| 日韩在线激情视频| 亚洲xxx自由成熟| 久久久久久久亚洲精品| 成人高h视频在线| 国外色69视频在线观看| 日韩h在线观看| 日本中文字幕不卡免费| 久久91精品国产91久久久| 日韩精品久久久久久福利| 97成人超碰免| 亚洲美女久久久| 免费91麻豆精品国产自产在线观看| 日韩av不卡在线| 欧洲亚洲女同hd| 亚洲变态欧美另类捆绑| 国产精品精品久久久| 日韩一区二区三区在线播放| 国产欧美婷婷中文| 日韩激情第一页| 欧美极品美女电影一区| 日韩av电影中文字幕| 韩国三级电影久久久久久| 国产一区二区黄| 中文字幕亚洲欧美日韩2019| 免费97视频在线精品国自产拍| 亚洲人成电影网站色www| 国产精品视频男人的天堂| 精品中文字幕久久久久久| 亚洲电影天堂av| 久久精品国产91精品亚洲| 青草青草久热精品视频在线观看| 欧美激情久久久久| 亚洲欧美国产精品专区久久| 国产精品aaa| 一个色综合导航| 欧美性开放视频| 欧美中文字幕在线| 川上优av一区二区线观看| 91国内揄拍国内精品对白| 国产精品www网站| 欧美极品第一页| 97av在线播放| 日本亚洲欧美成人| 97视频在线观看网址| 欧美亚洲另类在线| 久久久91精品| 日韩免费在线免费观看| 57pao国产精品一区| 九九久久综合网站| 亚洲第一av网站| 久久资源免费视频| 久久777国产线看观看精品| 国产成人在线播放| 久久99视频精品| 亚洲精品自拍偷拍| 琪琪亚洲精品午夜在线| 欧美日韩视频免费播放| 久久久av免费| 欧美黑人一区二区三区| 日韩免费观看视频| 亚洲视频在线观看视频| 亚洲美女免费精品视频在线观看| 国产欧美久久久久久| 久久精品这里热有精品| 狠狠色香婷婷久久亚洲精品| 精品久久香蕉国产线看观看gif| 91精品久久久久久久久久久久久久| 97在线精品国自产拍中文| 欧美激情视频三区| 色阁综合伊人av| 日韩av在线免费观看一区| 午夜精品久久久久久久99黑人|