生命不是一场赛跑,而是一次旅行。比赛在乎终点,而旅行在乎沿途风景。今天,又是新的一天,开心的睡了一场懒觉,开始一天的作业,上面的那句话是我在网上看到的,而我的感受是---生命是一场旅行,开心就好。 我们在生活中可能会遇到许多困难,但我们要以乐观(开心)的态度面对,请记住,一切都会过去!
然后就是正事,我们接着来说说网络电视精灵,上次我们实现了绑定把所有的频道到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,今天所讲的就到此为止,下次再来!!!