fix: 优化左侧菜单高度与悬浮状态
This commit is contained in:
@@ -142,6 +142,7 @@ namespace Lskj.Main.Control
|
||||
private const int GroupControlTopPadding = 8;
|
||||
private static readonly Color LeftGroupTreeBackgroundColor = Color.FromArgb(39, 45, 81);
|
||||
private static readonly Color LeftGroupTreeActiveColor = Color.FromArgb(52, 142, 216);
|
||||
private static readonly Color LeftGroupTreeHoverColor = Color.FromArgb(79, 101, 132);
|
||||
private static readonly Color LeftGroupTreeTextColor = Color.FromArgb(235, 255, 255, 255);
|
||||
private static readonly Color LeftGroupTreeArrowColor = Color.FromArgb(173, 255, 255, 255);
|
||||
|
||||
@@ -774,8 +775,10 @@ namespace Lskj.Main.Control
|
||||
_leftGroupTreeView.Columns.Add(textColumn);
|
||||
|
||||
_leftGroupTreeView.OptionsBehavior.Editable = false;
|
||||
_leftGroupTreeView.OptionsBehavior.AutoNodeHeight = false;
|
||||
_leftGroupTreeView.OptionsSelection.EnableAppearanceFocusedCell = false;
|
||||
_leftGroupTreeView.OptionsSelection.EnableAppearanceFocusedRow = true;
|
||||
_leftGroupTreeView.OptionsSelection.MultiSelect = true;
|
||||
_leftGroupTreeView.OptionsView.AutoWidth = true;
|
||||
_leftGroupTreeView.OptionsView.ExpandButtonCentered = true;
|
||||
_leftGroupTreeView.OptionsView.ShowButtons = false;
|
||||
@@ -802,10 +805,15 @@ namespace Lskj.Main.Control
|
||||
_leftGroupTreeView.Appearance.HideSelectionRow.ForeColor = Color.White;
|
||||
_leftGroupTreeView.Appearance.HideSelectionRow.Options.UseBackColor = true;
|
||||
_leftGroupTreeView.Appearance.HideSelectionRow.Options.UseForeColor = true;
|
||||
_leftGroupTreeView.Appearance.SelectedRow.BackColor = LeftGroupTreeHoverColor;
|
||||
_leftGroupTreeView.Appearance.SelectedRow.ForeColor = Color.White;
|
||||
_leftGroupTreeView.Appearance.SelectedRow.Options.UseBackColor = true;
|
||||
_leftGroupTreeView.Appearance.SelectedRow.Options.UseForeColor = true;
|
||||
|
||||
_leftGroupTreeView.SelectImageList = GetLeftGroupTreeImageList();
|
||||
_leftGroupTreeView.AfterCollapse += OnLeftGroupTreeListAfterExpandOrCollapse;
|
||||
_leftGroupTreeView.AfterExpand += OnLeftGroupTreeListAfterExpandOrCollapse;
|
||||
_leftGroupTreeView.CalcNodeHeight += OnLeftGroupTreeListCalcNodeHeight;
|
||||
_leftGroupTreeView.MouseClick += OnLeftGroupTreeListMouseClick;
|
||||
_leftGroupTreeView.MouseLeave += OnLeftGroupTreeListMouseLeave;
|
||||
_leftGroupTreeView.MouseMove += OnLeftGroupTreeListMouseMove;
|
||||
@@ -883,6 +891,12 @@ namespace Lskj.Main.Control
|
||||
UpdateLeftGroupTreeNodeArrow(e == null ? null : e.Node);
|
||||
}
|
||||
|
||||
private void OnLeftGroupTreeListCalcNodeHeight(object sender, CalcNodeHeightEventArgs e)
|
||||
{
|
||||
if (e == null || e.Node == null) return;
|
||||
e.NodeHeight = ScaleLeftGroupTreeMetric(e.Node.Level == 0 ? 44 : 36);
|
||||
}
|
||||
|
||||
private void UpdateLeftGroupTreeNodeArrow(TreeListNode node)
|
||||
{
|
||||
if (node == null || node.Level != 0) return;
|
||||
@@ -900,8 +914,16 @@ namespace Lskj.Main.Control
|
||||
TreeListNode hotNode = hitInfo == null ? null : hitInfo.Node;
|
||||
if (hotNode == _leftGroupHotNode) return;
|
||||
|
||||
if (_leftGroupHotNode != null && _leftGroupHotNode != _leftGroupSelectedNode)
|
||||
{
|
||||
_leftGroupHotNode.Selected = false;
|
||||
}
|
||||
_leftGroupHotNode = hotNode;
|
||||
treeList.FocusedNode = _leftGroupHotNode ?? _leftGroupSelectedNode;
|
||||
if (_leftGroupHotNode != null && _leftGroupHotNode != _leftGroupSelectedNode)
|
||||
{
|
||||
_leftGroupHotNode.Selected = true;
|
||||
}
|
||||
treeList.Invalidate();
|
||||
}
|
||||
|
||||
private void OnLeftGroupTreeListMouseLeave(object sender, EventArgs e)
|
||||
@@ -909,11 +931,17 @@ namespace Lskj.Main.Control
|
||||
TreeList treeList = sender as TreeList;
|
||||
if (treeList == null) return;
|
||||
|
||||
if (_leftGroupHotNode != null && _leftGroupHotNode != _leftGroupSelectedNode)
|
||||
{
|
||||
_leftGroupHotNode.Selected = false;
|
||||
}
|
||||
_leftGroupHotNode = null;
|
||||
if (_leftGroupSelectedNode != null)
|
||||
{
|
||||
_leftGroupSelectedNode.Selected = true;
|
||||
treeList.FocusedNode = _leftGroupSelectedNode;
|
||||
}
|
||||
treeList.Invalidate();
|
||||
}
|
||||
|
||||
private Panel GetLeftGroupSeparator()
|
||||
@@ -1011,6 +1039,7 @@ namespace Lskj.Main.Control
|
||||
if (!string.IsNullOrEmpty(defaultNode) && nodeMap.ContainsKey(defaultNode))
|
||||
{
|
||||
_leftGroupSelectedNode = nodeMap[defaultNode];
|
||||
_leftGroupSelectedNode.Selected = true;
|
||||
treeList.FocusedNode = _leftGroupSelectedNode;
|
||||
}
|
||||
}
|
||||
@@ -1030,8 +1059,19 @@ namespace Lskj.Main.Control
|
||||
TreeListHitInfo hitInfo = treeList.CalcHitInfo(e.Location);
|
||||
if (hitInfo == null || hitInfo.Node == null) return;
|
||||
|
||||
if (_leftGroupHotNode != null && _leftGroupHotNode != hitInfo.Node)
|
||||
{
|
||||
_leftGroupHotNode.Selected = false;
|
||||
}
|
||||
if (_leftGroupSelectedNode != null && _leftGroupSelectedNode != hitInfo.Node)
|
||||
{
|
||||
_leftGroupSelectedNode.Selected = false;
|
||||
}
|
||||
_leftGroupSelectedNode = hitInfo.Node;
|
||||
_leftGroupHotNode = hitInfo.Node;
|
||||
_leftGroupSelectedNode.Selected = true;
|
||||
treeList.FocusedNode = _leftGroupSelectedNode;
|
||||
treeList.Invalidate();
|
||||
if (hitInfo.Node.HasChildren && hitInfo.HitInfoType != HitInfoType.Button)
|
||||
{
|
||||
hitInfo.Node.Expanded = !hitInfo.Node.Expanded;
|
||||
|
||||
Reference in New Issue
Block a user