From ac98a76797f46380cf3b526cb920e1190a2b80ff Mon Sep 17 00:00:00 2001
From: CJKmkp <2564608840@qq.com>
Date: Sun, 22 Feb 2026 12:23:13 +0800
Subject: [PATCH] =?UTF-8?q?add:=E7=99=BD=E6=9D=BF=E9=A1=B5=E9=9D=A2?=
=?UTF-8?q?=E5=88=A0=E9=99=A4?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
Ink Canvas/MainWindow.xaml | 14 +++++
Ink Canvas/MainWindow_cs/MW_BoardControls.cs | 63 ++++++++++++--------
Ink Canvas/MainWindow_cs/MW_PageListView.cs | 9 +++
3 files changed, 62 insertions(+), 24 deletions(-)
diff --git a/Ink Canvas/MainWindow.xaml b/Ink Canvas/MainWindow.xaml
index 17bd2740..160a44d6 100644
--- a/Ink Canvas/MainWindow.xaml
+++ b/Ink Canvas/MainWindow.xaml
@@ -4963,6 +4963,13 @@
Text="{Binding Index}">
+
@@ -7124,6 +7131,13 @@
Text="{Binding Index}">
+
diff --git a/Ink Canvas/MainWindow_cs/MW_BoardControls.cs b/Ink Canvas/MainWindow_cs/MW_BoardControls.cs
index dca963c2..daa079c9 100644
--- a/Ink Canvas/MainWindow_cs/MW_BoardControls.cs
+++ b/Ink Canvas/MainWindow_cs/MW_BoardControls.cs
@@ -476,45 +476,60 @@ namespace Ink_Canvas
///
/// 处理白板页面删除按钮点击事件,删除当前白板页面
///
- /// 事件发送者
- /// 事件参数
- ///
- /// - 隐藏图片选择工具栏
- /// - 清除当前画布内容
- /// - 重新排列剩余页面的历史记录
- /// - 更新当前页面索引和页面总数
- /// - 恢复剩余页面内容
- /// - 更新页码显示
- /// - 启用添加按钮(如果页面总数小于99)
- ///
private void BtnWhiteBoardDelete_Click(object sender, RoutedEventArgs e)
{
- // 隐藏图片选择工具栏
+ DeleteWhiteBoardPageByIndex(CurrentWhiteboardIndex);
+ }
+
+ ///
+ /// 按页码删除指定白板页(用于预览列表等)。仅当总页数大于 1 时有效。
+ ///
+ /// 要删除的页码(1 到 WhiteboardTotalCount)
+ private void DeleteWhiteBoardPageByIndex(int pageIndex)
+ {
+ if (WhiteboardTotalCount <= 1 || pageIndex < 1 || pageIndex > WhiteboardTotalCount)
+ return;
+
if (currentSelectedElement != null)
{
- // 保存当前编辑模式
var previousEditingMode = inkCanvas.EditingMode;
UnselectElement(currentSelectedElement);
- // 恢复编辑模式
inkCanvas.EditingMode = previousEditingMode;
currentSelectedElement = null;
}
- ClearStrokes(true);
-
- if (CurrentWhiteboardIndex != WhiteboardTotalCount)
- for (var i = CurrentWhiteboardIndex; i <= WhiteboardTotalCount; i++)
+ if (pageIndex == CurrentWhiteboardIndex)
+ {
+ ClearStrokes(true);
+ if (CurrentWhiteboardIndex != WhiteboardTotalCount)
+ for (var i = CurrentWhiteboardIndex; i <= WhiteboardTotalCount; i++)
+ TimeMachineHistories[i] = TimeMachineHistories[i + 1];
+ else
+ CurrentWhiteboardIndex--;
+ WhiteboardTotalCount--;
+ RestoreStrokes();
+ }
+ else if (pageIndex < CurrentWhiteboardIndex)
+ {
+ for (var i = pageIndex; i < WhiteboardTotalCount; i++)
TimeMachineHistories[i] = TimeMachineHistories[i + 1];
- else
+ TimeMachineHistories[WhiteboardTotalCount] = null;
+ WhiteboardTotalCount--;
CurrentWhiteboardIndex--;
-
- WhiteboardTotalCount--;
-
- RestoreStrokes();
+ }
+ else
+ {
+ for (var i = pageIndex; i < WhiteboardTotalCount; i++)
+ TimeMachineHistories[i] = TimeMachineHistories[i + 1];
+ TimeMachineHistories[WhiteboardTotalCount] = null;
+ WhiteboardTotalCount--;
+ }
UpdateIndexInfoDisplay();
-
if (WhiteboardTotalCount < 99) BtnWhiteBoardAdd.IsEnabled = true;
+ if (BoardBorderLeftPageListView?.Visibility == Visibility.Visible ||
+ BoardBorderRightPageListView?.Visibility == Visibility.Visible)
+ RefreshBlackBoardSidePageListView();
}
///
diff --git a/Ink Canvas/MainWindow_cs/MW_PageListView.cs b/Ink Canvas/MainWindow_cs/MW_PageListView.cs
index 65975a3f..0af5bfa5 100644
--- a/Ink Canvas/MainWindow_cs/MW_PageListView.cs
+++ b/Ink Canvas/MainWindow_cs/MW_PageListView.cs
@@ -265,5 +265,14 @@ namespace Ink_Canvas
}
}
+ ///
+ /// 预览列表中某页的“删除”按钮点击:删除该页,并阻止事件继续冒泡(避免触发选中/切页)。
+ ///
+ private void WhiteBoardPageListItem_DeleteClick(object sender, RoutedEventArgs e)
+ {
+ e.Handled = true;
+ if (sender is FrameworkElement fe && fe.DataContext is PageListViewItem item)
+ DeleteWhiteBoardPageByIndex(item.Index);
+ }
}
}
\ No newline at end of file