* 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
* 2022-04-01: V3.1.2 SetNodePainter * 2022-04-01: V3.1.2 SetNodePainter
* 2022-05-15: V3.1.8 * 2022-05-15: V3.1.8
* 2022-05-15: V3.1.8 CheckBox状态的NodeClickChangeCheckBoxes
******************************************************************************/ ******************************************************************************/
using System; using System;
@ -127,6 +128,14 @@ namespace Sunny.UI
set => view.TreeNodeStateSync = value; 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) private void View_AfterLabelEdit(object sender, NodeLabelEditEventArgs e)
{ {
AfterLabelEdit?.Invoke(this, 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);
}
}
}
} }
} }
} }