书上的例子,做的时候却发生了奇怪的问题。代码片段: private void tvwSource_AfterCheck(object sender, TreeViewEventArgs e)
{
SetCheck(e.Node, e.Node.Checked);
} private void SetCheck(TreeNode node, bool check)
{
node.Checked = check;
}说明:程序的目的是显示硬盘目录结构,实现勾选盘符时盘符下的所有文件夹及文件也被选中。显示目录结构已经实现。tvwSource_AfterCheck 是自定义事件方法,这个方法再ide中已经和treeviwe的 aftercheck 绑定。我步进的时候发现 执行完 node.Checked = check;后会返回到SetCheck.....然后形成了无限循环...百思不得其解...求教
{
SetCheck(e.Node, e.Node.Checked);
} private void SetCheck(TreeNode node, bool check)
{
node.Checked = check;
}说明:程序的目的是显示硬盘目录结构,实现勾选盘符时盘符下的所有文件夹及文件也被选中。显示目录结构已经实现。tvwSource_AfterCheck 是自定义事件方法,这个方法再ide中已经和treeviwe的 aftercheck 绑定。我步进的时候发现 执行完 node.Checked = check;后会返回到SetCheck.....然后形成了无限循环...百思不得其解...求教
解决方案 »
- jmail接收到的邮件附件名称变为.msg怎么解决
- TCP协议为啥不Receve的时候就收不到远程计算机send过来的数据?
- 从文件中读取对象(反序列化),判断对象读取完毕
- 计时器的实现
- TeeChart问题
- 图片问题,在什么事件里重画,具体怎么 画,望高手指教!!!!!
- 命名空间 System 不是比System.Data 的范围要大吗?用了using System后, 为什么还要用using System.Data
- tcp打洞
- xml:Lang 该组件上的 GetValue 操作失败,生成错误代码 0x80070057
- 如何在treeview,combox等控件的add,insert方法中插入其它属性?
- 类属性的问题
- 关于方法返回值的问题(局部变量)
{
if (e.Action == TreeViewAction.Unknown) 做个判断
return;
SetCheck(e.Node, e.Node.Checked); }
//一个函数就行了
private void tvwSource_AfterCheck(object sender, TreeViewEventArgs e)
{
foreach(TreeNode nodeEach in e.Node.Nodes)
{
nodeEach.Checked = e.Node.Checked;
}
}
将所有子节点选中,同时子节点会自动再触发这个事件。自动遍历。
你的错误和2楼说的一样!Up
bool canclick=true;
private void tvwSource_AfterCheck(object sender, TreeViewEventArgs e)
{
if(canclick)
SetCheck(e.Node, e.Node.Checked);
canclik=true;
} private void SetCheck(TreeNode node, bool check)
{
canclick=false;
node.Checked = check;
}
这句会触发 tvwSource_AfterCheck事件
在AfterCheck事件中判断是鼠标键盘操作导致选中,还是编码导致改变的。记下节点的深度。然后分别向上、向下递归。实际我是重写了TreeView,定义了一个属性:ClickedLevel记录鼠标键盘操作的节点深度。