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


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

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

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

    加入和删除功能:

       然后,让我们来说一下思路:我们首先要把北京电视台,凤凰卫视..........这些频道的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文件如图所示

    然后不用说,直接在主窗体的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,今天所讲的就到此为止,下次再来!!!

  • 相关阅读:
    用定时器令P0(或其它IO口)产生多路方波
    边沿触发和电平触发的区别
    mysql数据库学习小结
    线程状态、同步
    java访问修饰符 public protect default private
    注解Responsebody RequestBody RequestMapping
    input标签元素,value属性取值问题,赋值
    java多线程的三种实现方式
    参数添加 dynamo
    Python 第三方库,模块,包的安装方法
  • 原文地址:https://www.cnblogs.com/wth1129/p/5259390.html
Copyright © 2020-2023  润新知