网络电视精灵-----第二部分--实现点频道播放节目

    生命不是一场赛跑,而是一次旅行。比赛在乎终点,而旅行在乎沿途风景。今天,又是新的一天,开心的睡了一场懒觉,开始一天的作业,上面的那句话是我在网上看到的,而我的感受是---生命是一场旅行,开心就好。 我们在生活中可能会遇到许多困难,但我们要以乐观(开心)的态度面对,请记住,一切都会过去!

    然后就是正事,我们接着来说说网络电视精灵,上次我们实现了绑定把所有的频道到TreeView控件上,这次我们来实现绑定节目单到绑定到DataGridView控件上和加入自己的喜欢的节目单。

  首先,先展现一下我们需要实现的功能。

网络电视精灵-----第二部分--实现点频道播放节目_第1张图片

加入和删除功能:

网络电视精灵-----第二部分--实现点频道播放节目_第2张图片

   然后,让我们来说一下思路:我们首先要把北京电视台,凤凰卫视..........这些频道的xml来加入到泛型集合里,那我们就需要一个方法,就是子类中重写的Feach()方法

 public  class TVAchannel:ChannelBase
    {

        public override void Fetch()
        {
            XmlDocument doc = new XmlDocument();
            doc.Load(Path);
            if (Tvgram==null)
            {
                Tvgram = new List<Tvprogrammer>();
            }
            XmlNode xn = doc.DocumentElement;
            foreach (XmlNode item in xn.ChildNodes)
            {//一个item是一个TVprogrammer对象
                Tvprogrammer program = new Tvprogrammer();
                program.Time = Convert.ToDateTime(item["playTime"].InnerText);
                program.shiduan = item["dang"].InnerText;
                program.Name=item["programmerName"].InnerText;
                program.Path = item["path"].InnerText;
                //添加到泛型集合中
                Tvgram.Add(program);
            }
        }
    }

而对应的xml文件如图所示

网络电视精灵-----第二部分--实现点频道播放节目_第3张图片

然后不用说,直接在主窗体的TreeView控件的AfterSelect事件中写入如下代码----实现datagridview绑定数据(泛型)

  private void tvList_AfterSelect(object sender, TreeViewEventArgs e)
        {
            TreeNode selectedNode = tvList.SelectedNode;
           
           if(tvList.SelectedNode.Level == 1 && tvList.SelectedNode.Parent.Text == "所有电视台")//listview控件特性,默认选中第一个Node
            {
                //隐藏右键菜单“删除”
                cmsList.Items[1].Visible = false;
                ChannelBase channel = (ChannelBase)selectedNode.Tag;
                //清理集合,避免点一次添加一次
                if (channel.Tvgram != null)
                {
                    channel.Tvgram.Clear();
                }
                channel.Fetch();
                
                List<Tvprogrammer> list = channel.Tvgram;
                //绑定dgv控件
                dgvList.DataSource = list;
            }
}

 最后,我们来试下一下加入我的电视台和删除功能,这个是很easy的,代码如下:
    这行代码是确保右键菜单所有电视台下只能有加入电视台功能,我的电视台只有删除功能。

  if(tvList.SelectedNode.Level == 1 && tvList.SelectedNode.Parent.Text == "所有电视台")//listview控件特性,默认选中第一个Node
            {
                //隐藏右键菜单“删除”
                cmsList.Items[1].Visible = false;
}
 else  if (tvList.SelectedNode.Level == 1 && tvList.SelectedNode.Parent.Text == "我的电视台")
           {
               cmsList.Items[0].Visible = false;
               cmsList.Items[1].Visible = true;
           }

  而下面的这些代码,就是实现加入和删除的功能。

 private void 加入我的电视台ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            
                channelManager man = new channelManager();
                man.GetxmlToList();
                Dictionary<string, ChannelBase> list = man.FullChannel;
                foreach (ChannelBase item in list.Values)
                {
                    if (item.ChannelName==tvList.SelectedNode.Text)//判定treeView 和泛型集合中是否一致
                    {
                        TreeNode tn = new TreeNode();
                        tn.Text = item.ChannelName;
                        tn.Tag = item;
                        //将tn 加载到我的电台下
                        tr.Nodes.Add(tn);
                       
                    }
                    

               
            }
        }
 private void 删除ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            tvList.SelectedNode.Remove();
        }

   OK,今天所讲的就到此为止,下次再来!!!

你可能感兴趣的:(网络电视精灵-----第二部分--实现点频道播放节目)