Files
2026-01-21 11:53:54 +08:00

68 lines
1.6 KiB
C#

using System;
using System.Windows.Forms;
using PDFPatcher.Common;
namespace PDFPatcher.Functions.Editor.Parts
{
sealed class CurrentPageBoxHandler
{
readonly ToolStripTextBox _PageBox;
readonly ViewerControl _ViewerBox;
public CurrentPageBoxHandler(ToolStripTextBox pageBox, ViewerControl viewer) {
_PageBox = pageBox;
_ViewerBox = viewer;
pageBox.KeyUp += HandlePageKeyUp;
((TextBox)pageBox.Control).MouseWheel += HandlePageBoxMouseWheel;
viewer.DocumentLoaded += HandleViewerDocumentLoaded;
viewer.PageChanged += HandleViewerPageChanged;
}
void HandlePageBoxMouseWheel(object sender, MouseEventArgs e) {
if (e.Delta < 0) {
_ViewerBox.ExecuteCommand(EditorCommands.NextPage);
}
else if (e.Delta > 0) {
_ViewerBox.ExecuteCommand(EditorCommands.PreviousPage);
}
}
void HandlePageKeyUp(object sender, KeyEventArgs e) {
int d;
switch (e.KeyCode) {
case Keys.Enter:
d = 0;
break;
case Keys.Up:
case Keys.OemMinus:
d = -1;
break;
case Keys.Down:
case Keys.Add:
d = 1;
break;
case Keys.Home:
_ViewerBox.CurrentPageNumber = 1;
return;
case Keys.End:
_ViewerBox.CurrentPageNumber = -1;
return;
default:
return;
}
if (_PageBox.Text.TryParse(out int p)) {
_ViewerBox.CurrentPageNumber = p + d;
}
}
void HandleViewerDocumentLoaded(object sender, EventArgs e) {
_PageBox.ToolTipText = $"文档共{_ViewerBox.TotalPageCount.ToText()}页\nHome:转到第一页\nEnd:转到最后一页";
}
void HandleViewerPageChanged(object sender, EventArgs e) {
_PageBox.Text = _ViewerBox.CurrentPageNumber.ToText();
}
}
}