HomePagePrinterDialog.xaml.cs 8.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173
  1. using PDF_Office.ViewModels.Dialog.HomePageToolsDialogs.HomePagePrinter;
  2. using Prism.Ioc;
  3. using Prism.Regions;
  4. using System.Text.RegularExpressions;
  5. using System.Windows;
  6. using System.Windows.Controls;
  7. using System.Windows.Forms;
  8. using System.Windows.Input;
  9. using UserControl = System.Windows.Controls.UserControl;
  10. namespace PDF_Office.Views.Dialog.HomePageToolsDialogs.HomePagePrinter
  11. {
  12. /// <summary>
  13. /// Interaction logic for PrinterDialog
  14. /// </summary>
  15. public partial class HomePagePrinterDialog : UserControl
  16. {
  17. private IContainerProvider containerProvider;
  18. private Regex regexForPageIndex = new Regex(@"^[0-9]\d*$");
  19. private Regex regexForZeroIndex = new Regex(@"^[0]\d*$");
  20. private int _currentPreviewPageIndex;
  21. public int CurrentPreviewPageIndex
  22. {
  23. get { return _currentPreviewPageIndex; }
  24. set { _currentPreviewPageIndex = value; }
  25. }
  26. public HomePagePrinterDialog(IContainerProvider containerProvider)
  27. {
  28. InitializeComponent();
  29. this.containerProvider = containerProvider;
  30. var regionManager = containerProvider.Resolve<IRegionManager>();
  31. RegionManager.SetRegionManager(this, regionManager);
  32. RegionManager.UpdateRegions();
  33. }
  34. private void PageRangeComboBox_Loaded(object sender, RoutedEventArgs e)
  35. {
  36. PageRangeComboBox.CurrentPage = true;
  37. if (PageRangeComboBox.CurrentPage)
  38. {
  39. ComboBoxItem comboBoxItem = new ComboBoxItem();
  40. comboBoxItem.Content = "当前页面";
  41. PageRangeComboBox.writableComboBox.Items.Insert(1, comboBoxItem);
  42. }
  43. PageRangeComboBox.writableComboBox.SelectionChanged += WritableComboBox_SelectionChanged;
  44. }
  45. private void WritableComboBox_SelectionChanged(object sender, SelectionChangedEventArgs e)
  46. {
  47. ((HomePagePrinterDialogViewModel)this.DataContext).SetPageRangeCommand.Execute();
  48. this.CurrentPageIndexTextBox.Text = "1";
  49. CurrentPreviewPageIndex= 0;
  50. }
  51. private void PrintOrientationComboBox_SelectionChanged(object sender, SelectionChangedEventArgs e)
  52. {
  53. ((HomePagePrinterDialogViewModel)this.DataContext).SetPrintOrientationCommand.Execute();
  54. }
  55. private void CurrentPageIndexTextBox_PreviewTextInput(object sender, System.Windows.Input.TextCompositionEventArgs e)
  56. {
  57. Regex re = new Regex("[^0-9]+");
  58. e.Handled = re.IsMatch(e.Text);
  59. }
  60. private void CurrentPageIndexTextBox_KeyDown(object sender, System.Windows.Input.KeyEventArgs e)
  61. {
  62. if (((HomePagePrinterDialogViewModel)this.DataContext).MaxPageNumber != null)
  63. {
  64. if (e.Key == System.Windows.Input.Key.Enter && this.CurrentPageIndexTextBox.Text != (CurrentPreviewPageIndex + 1).ToString())
  65. {
  66. var CurrentPageTextBox = sender as System.Windows.Controls.TextBox;
  67. //非子集、空集、边界值
  68. if (!regexForPageIndex.IsMatch(CurrentPageTextBox.Text) || CurrentPageTextBox.Text == "" || regexForZeroIndex.IsMatch(CurrentPageTextBox.Text))
  69. {
  70. CurrentPreviewPageIndex = 1;
  71. CurrentPageTextBox.Text = CurrentPreviewPageIndex.ToString();
  72. }
  73. if (int.Parse(CurrentPageTextBox.Text) > int.Parse(((HomePagePrinterDialogViewModel)this.DataContext).MaxPageNumber))
  74. {
  75. CurrentPreviewPageIndex = int.Parse(((HomePagePrinterDialogViewModel)this.DataContext).MaxPageNumber);
  76. CurrentPageTextBox.Text = ((HomePagePrinterDialogViewModel)this.DataContext).MaxPageNumber;
  77. }
  78. CurrentPreviewPageIndex = int.Parse(CurrentPageIndexTextBox.Text);
  79. CurrentPreviewPageIndex = CurrentPreviewPageIndex - 1;
  80. ((HomePagePrinterDialogViewModel)this.DataContext).CurrentListIndexString = (CurrentPreviewPageIndex).ToString();
  81. ((HomePagePrinterDialogViewModel)this.DataContext).GetPagePreviewWhenIndexChangedCommand.Execute();
  82. }
  83. }
  84. }
  85. private void PrePageBtn_Click(object sender, RoutedEventArgs e)
  86. {
  87. CurrentPreviewPageIndex--;
  88. this.CurrentPageIndexTextBox.Text = (CurrentPreviewPageIndex + 1).ToString();
  89. ((HomePagePrinterDialogViewModel)this.DataContext).CurrentListIndexString = CurrentPreviewPageIndex.ToString();
  90. ((HomePagePrinterDialogViewModel)this.DataContext).GetPagePreviewWhenIndexChangedCommand.Execute();
  91. }
  92. private void NextPageBtn_Click(object sender, RoutedEventArgs e)
  93. {
  94. CurrentPreviewPageIndex++;
  95. this.CurrentPageIndexTextBox.Text = (CurrentPreviewPageIndex + 1).ToString();
  96. ((HomePagePrinterDialogViewModel)this.DataContext).CurrentListIndexString = CurrentPreviewPageIndex.ToString();
  97. ((HomePagePrinterDialogViewModel)this.DataContext).GetPagePreviewWhenIndexChangedCommand.Execute();
  98. }
  99. //private void CurrentPageIndexTextBox_TextChanged(object sender, TextChangedEventArgs e)
  100. //{
  101. // if (((HomePagePrinterDialogViewModel)this.DataContext).MaxPageNumber != null)
  102. // {
  103. // if (this.CurrentPageIndexTextBox.Text != "")
  104. // {
  105. // var CurrentPageTextBox = sender as System.Windows.Controls.TextBox;
  106. // if (regexForPageIndex.IsMatch(CurrentPageTextBox.Text))
  107. // {
  108. // if (int.Parse(((HomePagePrinterDialogViewModel)this.DataContext).MaxPageNumber) > 2)
  109. // {
  110. // if (int.Parse(CurrentPageTextBox.Text) > 1 && int.Parse(CurrentPageTextBox.Text) < int.Parse(((HomePagePrinterDialogViewModel)this.DataContext).MaxPageNumber))
  111. // {
  112. // PrePageBtn.IsEnabled = true;
  113. // NextPageBtn.IsEnabled = true;
  114. // }
  115. // else if (int.Parse(CurrentPageTextBox.Text) <= 1 && int.Parse(CurrentPageTextBox.Text) < int.Parse(((HomePagePrinterDialogViewModel)this.DataContext).MaxPageNumber))
  116. // {
  117. // PrePageBtn.IsEnabled = false;
  118. // NextPageBtn.IsEnabled = true;
  119. // }
  120. // else if (int.Parse(CurrentPageTextBox.Text) > 1 && int.Parse(CurrentPageTextBox.Text) >= int.Parse(((HomePagePrinterDialogViewModel)this.DataContext).MaxPageNumber))
  121. // {
  122. // PrePageBtn.IsEnabled = true;
  123. // NextPageBtn.IsEnabled = false;
  124. // }
  125. // }
  126. // else
  127. // {
  128. // PrePageBtn.IsEnabled = false;
  129. // NextPageBtn.IsEnabled = false;
  130. // }
  131. // }
  132. // else
  133. // {
  134. // this.PrePageBtn.IsEnabled = false;
  135. // this.NextPageBtn.IsEnabled = false;
  136. // }
  137. // }
  138. // else
  139. // {
  140. // this.PrePageBtn.IsEnabled = false;
  141. // this.NextPageBtn.IsEnabled = false;
  142. // }
  143. // }
  144. //}
  145. private void ComboBox_SelectionChanged(object sender, SelectionChangedEventArgs e)
  146. {
  147. ((HomePagePrinterDialogViewModel)this.DataContext).SetPrintContentCommand.Execute();
  148. }
  149. private void ReversePageCheckBox_Click(object sender, RoutedEventArgs e)
  150. {
  151. this.CurrentPageIndexTextBox.Text = "1";
  152. CurrentPreviewPageIndex = 0;
  153. }
  154. }
  155. }