我想编写一个播放器,treeview里的内容是获取xml文档里的内容,现在能显示了,但是不知道如何将节点的url提交给webBrowser控件。
xml内容:<?xml version="1.0" encoding="utf-8"?>
<movies id="0" name="今日更新">
<m_name id="1" name="我的青春谁做主">
<several id="1" name="第1集" url="/play/youku.html?id=5645" target="_blank" />
<several id="2" name="第2集" url="/play/youku.html?id=5645" target="webBrowser1" />
<several id="3" name="第3集" url="/play/youku.html?id=45232" target="webBrowser1" />
<several id="4" name="第4集" url="/play/youku.html?id=56344" target="webBrowser1" />
</m_name>
<m_name id="2" name="婚姻保卫战">
<several id="1" name="第1集" url="/play/56.html?id=23434" target="webBrowser1" />
<several id="2" name="第2集" url="/play/56.html?id=5645" target="webBrowser1" />
<several id="3" name="第3集" url="/play/56.html?id=45232" target="webBrowser1" />
<several id="4" name="第4集" url="/play/56.html?id=56344" target="webBrowser1" />
</m_name>
<m_name id="3" name="奋斗">
<several id="1" name="第1集" url="/play/tudou.html?id=23434" target="webBrowser1" />
<several id="2" name="第2集" url="/play/tudou.html?id=5645" target="webBrowser1" />
<several id="3" name="第3集" url="/play/tudou.html?id=45232" target="webBrowser1" />
<several id="4" name="第4集" url="/play/tudou.html?id=56344" target="webBrowser1" />
</m_name>
</movies>
c#代码:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.IO;
using System.Xml;
using System.Runtime.Serialization.Formatters.Binary;namespace maxplayer
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
bind1();
}
//显示根节点
private void bind1()
{
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.Load("XMLFile1.xml".Trim());
XmlElement root = xmlDoc.DocumentElement;
TreeNode trRoot = new TreeNode(root.Attributes["name"].Value);
this.treeView1.Nodes.Add(trRoot); for (int i = 0; i < root.ChildNodes.Count; i++)
{
TreeNode trNode = new TreeNode(root.ChildNodes[i].Attributes["name"].Value);
XmlNode xmlNode = root.ChildNodes[i];
trRoot.Nodes.Add(trNode);
setChild(trNode, xmlNode);
}
} //显示子节点
private void setChild(TreeNode node, XmlNode xmlNode)
{
int num = 0;
foreach (XmlNode nodexml in xmlNode.ChildNodes)
{
TreeNode nd = new TreeNode(nodexml.Attributes["name"].Value);
TreeNode nodes = new TreeNode();
XmlNode xmlNd = xmlNode.ChildNodes[num];
node.Nodes.Add(nd);
setChild(nd, xmlNd);
num++;
}
} private void treeView1_AfterSelect(object sender, TreeViewEventArgs e)
{
} }
}
我设置了一个webBrowser控件,当双击每一集的时候,就将那集里的url地址提交给webBrowser,并调用相应的html文件显示,请教怎么写代码呢?谢谢。
xml内容:<?xml version="1.0" encoding="utf-8"?>
<movies id="0" name="今日更新">
<m_name id="1" name="我的青春谁做主">
<several id="1" name="第1集" url="/play/youku.html?id=5645" target="_blank" />
<several id="2" name="第2集" url="/play/youku.html?id=5645" target="webBrowser1" />
<several id="3" name="第3集" url="/play/youku.html?id=45232" target="webBrowser1" />
<several id="4" name="第4集" url="/play/youku.html?id=56344" target="webBrowser1" />
</m_name>
<m_name id="2" name="婚姻保卫战">
<several id="1" name="第1集" url="/play/56.html?id=23434" target="webBrowser1" />
<several id="2" name="第2集" url="/play/56.html?id=5645" target="webBrowser1" />
<several id="3" name="第3集" url="/play/56.html?id=45232" target="webBrowser1" />
<several id="4" name="第4集" url="/play/56.html?id=56344" target="webBrowser1" />
</m_name>
<m_name id="3" name="奋斗">
<several id="1" name="第1集" url="/play/tudou.html?id=23434" target="webBrowser1" />
<several id="2" name="第2集" url="/play/tudou.html?id=5645" target="webBrowser1" />
<several id="3" name="第3集" url="/play/tudou.html?id=45232" target="webBrowser1" />
<several id="4" name="第4集" url="/play/tudou.html?id=56344" target="webBrowser1" />
</m_name>
</movies>
c#代码:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.IO;
using System.Xml;
using System.Runtime.Serialization.Formatters.Binary;namespace maxplayer
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
bind1();
}
//显示根节点
private void bind1()
{
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.Load("XMLFile1.xml".Trim());
XmlElement root = xmlDoc.DocumentElement;
TreeNode trRoot = new TreeNode(root.Attributes["name"].Value);
this.treeView1.Nodes.Add(trRoot); for (int i = 0; i < root.ChildNodes.Count; i++)
{
TreeNode trNode = new TreeNode(root.ChildNodes[i].Attributes["name"].Value);
XmlNode xmlNode = root.ChildNodes[i];
trRoot.Nodes.Add(trNode);
setChild(trNode, xmlNode);
}
} //显示子节点
private void setChild(TreeNode node, XmlNode xmlNode)
{
int num = 0;
foreach (XmlNode nodexml in xmlNode.ChildNodes)
{
TreeNode nd = new TreeNode(nodexml.Attributes["name"].Value);
TreeNode nodes = new TreeNode();
XmlNode xmlNd = xmlNode.ChildNodes[num];
node.Nodes.Add(nd);
setChild(nd, xmlNd);
num++;
}
} private void treeView1_AfterSelect(object sender, TreeViewEventArgs e)
{
} }
}
我设置了一个webBrowser控件,当双击每一集的时候,就将那集里的url地址提交给webBrowser,并调用相应的html文件显示,请教怎么写代码呢?谢谢。
也可直接使用播放器播发
TreeNode trNode = new TreeNode(root.ChildNodes[i].Attributes["name"].Value);
trNode.Tag = root.ChildNodes[i].Attributes["url"].Value然后在AfterSelect中取得Node的值private void treeView1_AfterSelect(object sender, TreeViewEventArgs e)
{
e.Node.Tag.ToString() 就应该是url了
}
<several id="1" name="第1集" url="/play/youku.html?id=5645" target="_blank" />大体思路就是我3楼说的,你自己调试下吧。
TreeNode nd = new TreeNode(nodexml.Attributes["name"].Value);
nd.Tag = nodexml.Attributes["url"].Value;能运行通过,但是下面的e.Node.Tag.ToString();又报错了:未将对象引用设置到对象的实例。
<several id="1" name="第1集" url="/play/56.html?id=23434" target="webBrowser1" />这个节点也会报"未将对象引用设置到对象的实例"的错吗?
多谢提醒,这个问题解决了。
private void treeView1_AfterSelect(object sender, TreeViewEventArgs e)
{
if (e.Node.Tag != null)
{
MessageBox.Show(e.Node.Tag.ToString());
}
}
通过