基本上 TreeView 有复选框,我能够获得 TreeNode,但无论我在 TreeNode 上单击什么地方,它都会为我提供 TreeNode,从它的文本到它的复选框,再超出一点(向左)。
我能否限制 HitTest ,以便仅在用户单击 TreeNode 的复选框时获得 TreeNode?p>
最佳答案
我真的不知道你想做什么,但你可以使用 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;
}
关于c# - 如何在鼠标按下时获取鼠标光标下的 TreeNode?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1870644/