当单击treeview的子节点或父节点时,我正在尝试打开表单:
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
TreeNode head = new TreeNode("HEAD");
TreeNode member = new TreeNode("MEMBER ");
TreeNode submember = new TreeNode("SUB-MEMBER");
private void Form1_Load(object sender, EventArgs e)
{
head.Nodes.Add(member);
member.Nodes.Add(submember);
treeView1.Nodes.Add(head);
treeView1.AfterSelect += new TreeViewEventHandler(treeView1_AfterSelect);
}
private void treeView1_AfterSelect(object sender, TreeViewEventArgs e)
{
if (treeView1.SelectedNode == member)
{
MemberForm mf = new MemberForm();
mf.ShowDialog();
}
if (treeView1.SelectedNode == head)
{
HeadForm hf = new HeadForm();
hf.ShowDialog();
}
if (treeView1.SelectedNode == submember)
{
SubMemberForm sf = new SubMemberForm(); //is this way of checking that which node is clicked efficient???
sf.ShowDialog();
}
}
}发布于 2011-03-29 19:58:12
只要您的树视图中只有三个节点,这可能是有效的。但是,这将要求您为添加的每个新节点编写额外的if语句。如果您试图区分节点深度,最好使用Level属性。
private void treeView1_AfterSelect(object sender, TreeViewEventArgs e)
{
if (treeView1.SelectedNode.Level == 0)
{
HeadForm hf = new HeadForm();
hf.ShowDialog();
}
else if (treeView1.SelectedNode.Level == 1)
{
MemberForm mf = new MemberForm();
mf.ShowDialog();
}
else if (treeView1.SelectedNode.Level == 2)
{
SubMemberForm sf = new SubMemberForm();
sf.ShowDialog();
}
}发布于 2011-03-29 20:25:06
这可能有点黑客和滥用标签功能,但你可以这样做:
TreeNode Head = new TreeNode("Head");
Head.Tag = typeof(HeadForm);
private void treeView1_AfterSelect(object sender, TreeViewEventArgs e)
{
Form toOpen = Activator.CreateInstance((Type)treeView1.SelectedNode.Tag) as Form;
if(toOpen != null)
toOpen.ShowDialog();
}https://stackoverflow.com/questions/5471756
复制相似问题