如图,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
那就加个判断
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
那就加个判断
if (treeView1.SelectedNode.Checked == true)
{
treeView1.SelectedNode.Checked = false;
}
else
{
treeView1.SelectedNode.Checked = true;
}
#4
对事件和 状态没理解清楚