如何响应winform的treeview控件中checkbox选中事件

时间:2022-02-06 08:52:14
如何响应winform的treeview控件中checkbox选中事件

如图,treeview的node是在后台生成的,而checkbox得选中状态也是后台根据数据库查询结果置上的。我想根据用户对checkbox的勾选改变后台的数据。如果用控件的AfterCheck事件确实能获取用户点击的checkbox,但是后台自动置checkbox的操作也会响应该事件。用NodeMouseClick事件又不能确定用户鼠标到底点击到checkbox没有。另外,能不能点击文字也能勾选上checkbox

4 个解决方案

#1


使用AfterSelect事件

   private void treeView1_AfterSelect(object sender, TreeViewEventArgs e)
        {
            treeView1.SelectedNode.Checked = true;
        }

#2


如果用户点击在checkbox上,系统会自动处理checkbox的勾选,事件中还会再次勾选,这样就重了啊

#3


引用 2 楼 lilewa 的回复:
如果用户点击在checkbox上,系统会自动处理checkbox的勾选,事件中还会再次勾选,这样就重了啊

那就加个判断

   if (treeView1.SelectedNode.Checked == true)
            {
                treeView1.SelectedNode.Checked = false;
            }
            else
            {
                treeView1.SelectedNode.Checked = true;
            }

#4


     对事件和  状态没理解清楚

#1


使用AfterSelect事件

   private void treeView1_AfterSelect(object sender, TreeViewEventArgs e)
        {
            treeView1.SelectedNode.Checked = true;
        }

#2


如果用户点击在checkbox上,系统会自动处理checkbox的勾选,事件中还会再次勾选,这样就重了啊

#3


引用 2 楼 lilewa 的回复:
如果用户点击在checkbox上,系统会自动处理checkbox的勾选,事件中还会再次勾选,这样就重了啊

那就加个判断

   if (treeView1.SelectedNode.Checked == true)
            {
                treeView1.SelectedNode.Checked = false;
            }
            else
            {
                treeView1.SelectedNode.Checked = true;
            }

#4


     对事件和  状态没理解清楚