* UITreeView: 增加了点击文字改变CheckBox状态的NodeClickChangeCheckBoxes

This commit is contained in:
Sunny 2022-05-15 17:16:50 +08:00
parent 55c8009f05
commit 0c89806af0

View File

@ -26,6 +26,7 @@
* 2022-04-01: V3.1.2
* 2022-04-01: V3.1.2 SetNodePainter
* 2022-05-15: V3.1.8
* 2022-05-15: V3.1.8 CheckBox状态的NodeClickChangeCheckBoxes
******************************************************************************/
using System;
@ -127,6 +128,14 @@ namespace Sunny.UI
set => view.TreeNodeStateSync = value;
}
[Description("点击文字改变CheckBox状态"), Category("SunnyUI")]
[DefaultValue(false)]
public bool NodeClickChangeCheckBoxes
{
get => view.NodeClickChangeCheckBoxes;
set => view.NodeClickChangeCheckBoxes = value;
}
private void View_AfterLabelEdit(object sender, NodeLabelEditEventArgs e)
{
AfterLabelEdit?.Invoke(this, e);
@ -1168,6 +1177,27 @@ namespace Sunny.UI
}
}
}
public bool NodeClickChangeCheckBoxes { get; set; }
protected override void OnNodeMouseClick(TreeNodeMouseClickEventArgs e)
{
base.OnNodeMouseClick(e);
if (CheckBoxes && NodeClickChangeCheckBoxes)
{
int drawLeft = e.Node.Bounds.X;
if (ImageList != null)
drawLeft -= ImageList.ImageSize.Width;
if (e.Location.X > drawLeft)
{
e.Node.Checked = !e.Node.Checked;
DicNodeStatus[e.Node.GetHashCode()] = false;
SetChildNodeCheckedState(e.Node, e.Node.Checked);
SetParentNodeCheckedState(e.Node, true);
}
}
}
}
}
}