2-10-3
TreeView控件实践操作
1.
案例学习:TreeView 控件的设计开发
(
1
)从工具箱之中拖放一个
textbox
控件,一个
TreeView
控件和三个
button
控件,如图
2-35
所示进行排列:
图2-35 TreeView 控件设计与开发窗体布局运行效果图
(
2
)再从工具箱的菜单和工具栏之中拖放一个
ContentMenuStrip
控件,并设置该菜单的三个子菜单名称。该控件主要用于当鼠标右键单击
TreeView
控件的时候,弹出用户自定义快捷菜单。如图
2-36
所示。
图2-36 配置ContentMenuStrip菜单控件
(
3
)具体功能的实现见下面的编码部分:
using
System;
using
System.Collections.Generic;
using
System.ComponentModel;
using
System.Data;
using
System.Drawing;
using
System.Text;
using
System.Windows.Forms;
namespace
WindowsApplication2
{
public partial class Form012 : Form
{
public Form012()
{
InitializeComponent();
}
/// <summary>
/// 初始化表单对象时候,设置treeView对象的根节点。
/// </summary>
private void Form012_Load(object sender, EventArgs e)
{
treeView1.Nodes.Clear();
TreeNode tem = new TreeNode("根节点");
treeView1.Nodes.Add(tem);
}
/// <summary>
/// 添加子节点方法代码
/// </summary>
private void AddChildNode()
{
//首先判断是否选定组件中的位置
if (treeView1.SelectedNode == null)
{
MessageBox.Show("请选择一个节点", "提示信息", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
else
{
if (textBox1.Text != "")
{
//创建一个节点对象,并初始化
TreeNode tmp;
tmp = new TreeNode(textBox1.Text);
//在TreeView组件中加入子节点
treeView1.SelectedNode.Nodes.Add(tmp);
treeView1.SelectedNode = tmp;
treeView1.ExpandAll();
}
else
{
MessageBox.Show("TextBox组件必须填入节点名称!", "提示信息", MessageBoxButtons.OK, MessageBoxIcon.Information);
return;
}
}
}
/// <summary>
/// 添加兄弟节点方法代码
/// </summary>
private void AddParent()
{
try
{
//首先判断是否选定组件中节点的位置
if (treeView1.SelectedNode == null)
{
MessageBox.Show("请选择一个节点", "提示信息", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
else
{
if (textBox1.Text != "")
{
//创建一个节点对象,并初始化
TreeNode tmp;
tmp = new TreeNode(textBox1.Text);
//在TreeView组件中加入兄弟节点
treeView1.SelectedNode.Parent.Nodes.Add(tmp);
treeView1.ExpandAll();
}
else
{
MessageBox.Show("TextBox组件必须填入节点名称!", "提示信息",MessageBoxButtons.OK, MessageBoxIcon.Information);
return;
}
}
}
catch
{
TreeNode tem = new TreeNode("根节点");
treeView1.Nodes.Add(tem);
}
}
/// <summary>
/// treeView1控件鼠标点击事件:MouseDown,判别如果点击鼠标右键,则弹出快捷菜单
/// </summary>
private void treeView1_MouseDown(object sender, MouseEventArgs e)
{
if (e.Button == MouseButtons.Right)
contextMenuStrip1.Show(this, new Point(e.X, e.Y));
//获取当前鼠标像素位置为快捷菜单弹出的位置
}
/// <summary>
/// 展开下一节点
/// </summary>
private void button1_Click(object sender, EventArgs e)
{
treeView1.SelectedNode.Expand();
}
/// <summary>
/// 展开全部节点
/// </summary>
private void button2_Click(object sender, EventArgs e)
{
//定位根节点
treeView1.SelectedNode = treeView1.Nodes[0];
//展开组件中的所有节点
treeView1.SelectedNode.ExpandAll();
}
/// <summary>
/// 折叠全部节点
/// </summary>
private void button3_Click(object sender, EventArgs e)
{
//定位根节点
treeView1.SelectedNode = treeView1.Nodes[0];
//折叠组件中所有节点
treeView1.SelectedNode.Collapse();
}
/// <summary>
/// 点击快捷菜单中“加入子节点”项,则调用用户自定义的AddChildNode()方法。
/// </summary>
private void ToolStripMenuItem1_Click(object sender, EventArgs e)
{
AddChildNode();
}
/// <summary>
/// 点击快捷菜单中“加入兄弟节点”项,则调用用户自定义的AddParent()方法。
/// </summary>
private void ToolStripMenuItem2_Click(object sender, EventArgs e)
{
AddParent();
}
/// <summary>
/// 点击快捷菜单中“删除节点”项代码。
/// </summary>
private void ToolStripMenuItem3_Click(object sender, EventArgs e)
{
//判断选定的节点是否存在下一级节点
if (treeView1.SelectedNode.Nodes.Count == 0)
//删除节点
treeView1.SelectedNode.Remove();
else
MessageBox.Show("请先删除此节点中的子节点!", "提示信息", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
}
}
|
本文转自 qianshao 51CTO博客,原文链接:http://blog.51cto.com/qianshao/208669,如需转载请自行联系原作者