优化鼠标拖动

This commit is contained in:
尚美 2025-03-17 23:34:35 +08:00
parent 9a66260b2a
commit 55bcbba9d0

View File

@ -118,8 +118,8 @@ namespace QuickLauncher
// 左侧面板调整相关 // 左侧面板调整相关
private bool isResizing = false; private bool isResizing = false;
private int resizingStartX = 0; private int resizingStartX = 5;
private int initialPanelWidth = 0; private int initialPanelWidth = 5;
private const int MIN_PANEL_WIDTH = 200; private const int MIN_PANEL_WIDTH = 200;
private const int MAX_PANEL_WIDTH = 500; private const int MAX_PANEL_WIDTH = 500;
private Panel resizeHandle; private Panel resizeHandle;
@ -160,6 +160,14 @@ namespace QuickLauncher
resizeHandle.MouseDown += ResizeHandle_MouseDown; resizeHandle.MouseDown += ResizeHandle_MouseDown;
resizeHandle.MouseMove += ResizeHandle_MouseMove; resizeHandle.MouseMove += ResizeHandle_MouseMove;
resizeHandle.MouseUp += ResizeHandle_MouseUp; resizeHandle.MouseUp += ResizeHandle_MouseUp;
resizeHandle.MouseEnter += (s, e) => resizeHandle.Cursor = Cursors.SizeWE;
resizeHandle.MouseLeave += (s, e) =>
{
if (!isResizing)
{
resizeHandle.Cursor = Cursors.SizeWE;
}
};
// 添加到左侧面板 // 添加到左侧面板
leftPanel.Controls.Add(resizeHandle); leftPanel.Controls.Add(resizeHandle);
@ -1037,6 +1045,10 @@ namespace QuickLauncher
// 捕获鼠标 // 捕获鼠标
resizeHandle.Capture = true; resizeHandle.Capture = true;
// 设置鼠标光标
this.Cursor = Cursors.SizeWE;
resizeHandle.Cursor = Cursors.SizeWE;
} }
} }
@ -1059,9 +1071,6 @@ namespace QuickLauncher
// 刷新布局 // 刷新布局
this.PerformLayout(); this.PerformLayout();
// 刷新分类列表,以适应新宽度
RefreshCategoryList();
} }
} }
@ -1070,14 +1079,37 @@ namespace QuickLauncher
{ {
if (isResizing) if (isResizing)
{ {
isResizing = false; // 先保存设置
// 释放鼠标捕获
resizeHandle.Capture = false;
// 保存设置
settings.LeftPanelWidth = leftPanel.Width; settings.LeftPanelWidth = leftPanel.Width;
SaveSettings(); SaveSettings();
// 在鼠标释放后刷新一次分类列表
RefreshCategoryList();
// 重置调整状态
isResizing = false;
// 恢复默认鼠标光标
this.Cursor = Cursors.Default;
// 最后释放鼠标捕获
resizeHandle.Capture = false;
// 确保调整手柄保持正确的光标
resizeHandle.Cursor = Cursors.SizeWE;
}
}
// 添加窗体鼠标移动事件处理
protected override void OnMouseMove(MouseEventArgs e)
{
base.OnMouseMove(e);
// 如果正在调整大小,确保鼠标光标保持为调整大小状态
if (isResizing)
{
this.Cursor = Cursors.SizeWE;
resizeHandle.Cursor = Cursors.SizeWE;
} }
} }
@ -1191,7 +1223,19 @@ namespace QuickLauncher
if (categories == null) if (categories == null)
return; return;
// 保存resizeHandle的引用
Panel savedResizeHandle = resizeHandle;
// 清除所有控件但保留resizeHandle
leftPanel.Controls.Clear(); leftPanel.Controls.Clear();
// 重新添加resizeHandle
if (savedResizeHandle != null)
{
leftPanel.Controls.Add(savedResizeHandle);
savedResizeHandle.BringToFront();
}
int buttonY = 10; int buttonY = 10;
foreach (var category in categories.Keys) foreach (var category in categories.Keys)