* UINavMenu: 尝试减少刷新闪烁

This commit is contained in:
Sunny 2024-02-19 17:18:39 +08:00
parent 9eaf41849f
commit b78aed01f7

View File

@ -97,6 +97,15 @@ namespace Sunny.UI
selectedForeColor = UIStyles.Blue.NavMenuMenuSelectedColor;
selectedHighColor = UIStyles.Blue.NavMenuMenuSelectedColor;
_timer = new System.Windows.Forms.Timer();
_timer.Tick += Timer_Tick;
}
protected override void Dispose(bool disposing)
{
_timer.Dispose();
base.Dispose(disposing);
}
private int scrollBarWidth = 0;
@ -637,6 +646,13 @@ namespace Sunny.UI
}
protected override void OnDrawNode(DrawTreeNodeEventArgs e)
{
if (_resizing)
{
return;
//e.DrawDefault = true;
}
else
{
if (BorderStyle != BorderStyle.None)
{
@ -779,6 +795,7 @@ namespace Sunny.UI
base.OnDrawNode(e);
}
}
private Color tipsColor = Color.Red;
@ -1220,5 +1237,38 @@ namespace Sunny.UI
public delegate void OnNodeRightSymbolClick(object sender, TreeNode node, int index, int symbol);
public event OnNodeRightSymbolClick NodeRightSymbolClick;
protected override void OnResize(EventArgs e)
{
//_resizing = true;
//_previousClientSize = ClientSize;
// 启动计时器
//_timer.Start();
}
private bool _resizing;
private System.Windows.Forms.Timer _timer;
private Size _previousClientSize;
private void Timer_Tick(object sender, EventArgs e)
{
// 检查控件的大小是否与前一次检查时相同
if (ClientSize == _previousClientSize)
{
// 控件已停止调整大小
_resizing = false;
// 清除计时器
_timer.Stop();
// 刷新 TreeView
Invalidate();
}
else
{
// 更新前一次检查时的大小
_previousClientSize = ClientSize;
}
}
}
}