我真的不知道您想做什么,但是您可以使用TreeView事件BeforeCheck或AfterCheck。
如果您不希望复选框更改状态,则BeforeCheck将TreeViewCancelEventArgs作为参数,TreeViewCancelEventArgs具有Cancel属性。
编辑:像这样的事情可能会工作...
private void treeView1_MouseDown(object sender, MouseEventArgs e)
{
_lastNode = null;
_mouseDown = true;
}
private void treeView1_MouseMove(object sender, MouseEventArgs e)
{
if (_mouseDown)
{
var hitTestInfo = treeView1.HitTest(e.Location);
if (hitTestInfo.Location == TreeViewHitTestLocations.StateImage
&& hitTestInfo.Node != _lastNode)
{
_lastNode = hitTestInfo.Node;
hitTestInfo.Node.Checked = !hitTestInfo.Node.Checked;
}
else
{
_lastNode = null;
}
}
}
private void treeView1_MouseUp(object sender, MouseEventArgs e)
{
_lastNode = null;
_mouseDown = false;
}
Run Code Online (Sandbox Code Playgroud)