public partial class Form1 : Form { public Form1()public class TvProgram { private DateTime playTime; //播出时间 public DateTime PlayTime { get { return playTime; } set { playTime = value; } } private string median; //时段 public string Median { get { return median; } set { median = value; } } private string programName; //节目名称 public string ProgramName { get { return programName; } set { programName = value; } } private string filePath; //节目文件路径 public string FilePath { get { return filePath; } set { filePath = value; } } }
public abstract class ChannelBase { private string channelName; //频道名称 public string ChannelName { get { return channelName; } set { channelName = value; } } private List<TvProgram> programList; //节目列表 public List<TvProgram> ProgramList { get { return programList; } set { programList = value; } } //解析频道节目单信息 public abstract void Fetch(); }
public class ChannelManager { private Dictionary<string, ChannelBase> fullChannel = new Dictionary<string, ChannelBase>(); public Dictionary<string, ChannelBase> FullChannel { get { return fullChannel; } set { fullChannel = value; } } public void LoadChannel() { fullChannel.Clear(); XmlDocument xmlDoc = new XmlDocument(); xmlDoc.Load("FullChannels.xml"); XmlNode xmlRoot = xmlDoc.DocumentElement; foreach (XmlNode node in xmlRoot.ChildNodes) { ChannelBase channel = CreateChannel(node["channelType"].InnerText); channel.ChannelName=node["tvChannel"].InnerText; fullChannel.Add(channel.ChannelName,channel); } } public ChannelBase CreateChannel(string type) { ChannelBase channel = null; if (type.Equals("TypeA")) { channel = new TypeAChannel(); } else { channel = new TypeBChannel(); } return channel; } //public ChannelManager() //{ // fullChannels = new Dictionary<string,ChannelBase>(); //} }
public class TypeAChannel:ChannelBase { public override void Fetch() { XmlDocument xmlDoc = new XmlDocument(); xmlDoc.Load("北京电视台.xml"); XmlNode elem = xmlDoc.DocumentElement; ProgramList = new List<TvProgram>(); foreach (XmlNode node in elem.ChildNodes) { if (node.Name == "tvProgramTable") { foreach (XmlNode subnode in node.ChildNodes) { TvProgram program = new TvProgram(); program.PlayTime = DateTime.Parse(subnode["playTime"].InnerText); program.Median = subnode["meridien"].InnerText; ; program.ProgramName = subnode["programName"].InnerText; program.FilePath = subnode["path"].InnerText; this.ProgramList.Add(program); } } } } }
public class TypeBChannel:ChannelBase { public override void Fetch() { //获取频道列表 XmlDocument xmlDoc = new XmlDocument(); xmlDoc.Load("凤凰卫视.xml"); XmlNode elem = xmlDoc.DocumentElement; ProgramList = new List<TvProgram>(); foreach (XmlNode node in elem.ChildNodes[0]) //[0]第一个节点 { TvProgram program = new TvProgram(); program.PlayTime = DateTime.Parse(node["playTime"].InnerText); program.Median = ""; program.ProgramName = node["name"].InnerText; program.FilePath = node["path"].InnerText; this.ProgramList.Add(program); } } }
{ InitializeComponent(); } ChannelManager ma = new ChannelManager(); private void Form1_Load(object sender, EventArgs e) { this.dataGridView1.AutoGenerateColumns = false; //避免生成多余的列 this.treeView1.Nodes.Clear(); //清空所有节点 //初始化根节点 ma.LoadChannel(); TreeNode nodeFirstLevel = new TreeNode("我的电视台"); this.treeView1.Nodes.Add(nodeFirstLevel); nodeFirstLevel = new TreeNode("所有电视台"); this.treeView1.Nodes.Add(nodeFirstLevel); //加载“所有电视台”,循环所有频道集合 foreach (ChannelBase dicOne in ma.FullChannel.Values) { //定义一个treeview节点 TreeNode nodeLevel = new TreeNode(dicOne.ChannelName); this.treeView1.Nodes.Add(nodeLevel); TreeNode node = new TreeNode(); node.Text = dicOne.ChannelName; node.Tag = dicOne; this.treeView1.Nodes[2].Nodes.Add(node); } } private void treeView1_AfterSelect(object sender, TreeViewEventArgs e) { if (this.treeView1.SelectedNode.Level == 0) { return; } //获取节目 this.ma.FullChannel[this.treeView1.SelectedNode.Text].Fetch(); this.dataGridView1.DataSource = this.ma.FullChannel[this.treeView1.SelectedNode.Text].ProgramList; } }
0 0