声明一个ArrayList
给你的树添加一个AfterSelect事件
判断节点是否选中
如果选中,放进ArrayList中
如果撤销选中,从ArrayList中remove掉
给你的树添加一个AfterSelect事件
判断节点是否选中
如果选中,放进ArrayList中
如果撤销选中,从ArrayList中remove掉
解决方案 »
- sql表设计及C#的应用
- 键盘事件 委托
- 求救:时间段查询,就是提示数据类型不匹配
- C# windows编程SQL Server 2005 数据库连接
- 为什么输出是这样的?
- 如何与 Windows 服务交互?
- 浏览器长期运行无法响应(程序中使用了js 的方法setTimeOut(),持续运行两天以后浏览器长期运行无法响应)
- 小妹是今天新来的,问一个关于C#的很菜的问题,请不要笑话我。
- 用vs.net做一个显示数据的例程,datagrid的双击事件中说:无法创建字段 forum_subject 的子列表。
- 救命啊,我今天搞了快一天都没有搞定,帮帮我:(二百分求助)
- 怎样将图片控件中的图片读取为数据流?谢谢,在线等候
- 在webform中怎样从DataGrid选中的行中,读取某列的数据?
是AfterSelect事件private void treeView1_AfterCheck(object sender, System.Windows.Forms.TreeViewEventArgs e)
{
if(e.Node.Checked)
{
if(!arrayList.Contains(e.Node))
{
arrayList.Add(e.Node);
}
}
else
{
if(arrayList.Contains(e.Node))
{
arrayList.Remove(e.Node);
}
}
}
/// <value>选中的接点</value>
private ArrayList _checkedlist = new ArrayList();
public ArrayList CheckedList
{
get
{
_checkedlist.Clear();
GetCheckedNode(this.Nodes);
return _checkedlist;
}
}///<summary>获得选中的节点</summary>
/// <param name="tnc">起始节点.</param>
/// <returns>.</returns>
private void GetCheckedNode(TreeNodeCollection tnc)
{
foreach(TreeNode tmpNd in tnc )
{
if ( tmpNd.CheckBox && tmpNd.Checked)
{
_checkedlist .Add(tmpNd);
}
if(tmpNd.Nodes.Count!=0)
{
GetCheckedNode(tmpNd.Nodes);
}
}
}
比较方便,另外当check父节点的时候把它下面的所有子节点都check,
去掉时要做反过程,向列表中加东西还是要遍历一下子树,去掉父点时也要
遍历子树,不过使用arraylist的方法在树节点很多时可以提高速度,也是不错的
方法