//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\
// MyPrintEvent2.cs Split out 16-Mar-2019
//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\
// v5.0.6.01 22-Feb-2019 Dialing all in Now!
// v5.0.6.01 02-Mar-2019 FixedWell with MPP
// Menu items calling back across, etc.
// v5.0.6.02 08-Mar-2019 Batch Stuff & Debug
// v5.0.6.03 14-Mar-2019 ReSetPages Call.
// v5.0.6.03 16-Mar-2019 Split to simplify.
//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\
// v5.0.6.04 25-Mar-2019 FixedWell & nearly
// done. This is really working great now &
// with SomePages2! Design ready: CurrentPage
// PrintDialog Option to go into Selection.
// Nearly all of that Logic will have to be
// in ME. Since that's where BOTH
// CurrentPage & Selection are or are going
// to have to come from. And at some point
// I will have to ReRoute or Mod or ReTest
// the 2nd Instance Code in PrintForm2.cs
// in PrintBlaster Deluxe. Or Call Print
// Functions directly:
// from Smesa to MCPL eventually maybe.
//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\
// v5.0.6.04 29-Mar-2019 Tested & Clean!
// v5.1.6.06 13-Apr Sel & CurPag detail.
//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\
using System.Drawing;
using System.Drawing.Printing;
using MCC = MyCustomControls.CustomControl;
using MPC = MyCustomPrintLibrary.MyPrintClass;
using MFC = MyCustomPrintLibrary.MyFontClass;
using MPR = MyCustomPrintLibrary
.Properties.Resources;
using MPS = MyCustomPrintLibrary
.Properties.Settings;
namespace MyCustomPrintLibrary
{
public static partial class MyPrintEvent
{
private static void MyPrintEvent2(
ref PrintPageEventArgs e)
{
if (_firstPage)
{
_firstPage = false;
if (e.PageSettings
.PrinterSettings.PrintRange
.Equals(PrintRange.SomePages))
SomePages1(ref e);
}
if (e.PageSettings.PrinterSettings
.PrintRange.Equals(
PrintRange.SomePages))
SomePages2(ref e);
if (e.PageSettings.PrinterSettings
.PrintRange.Equals(
PrintRange.AllPages))
PrintThisPageNow(e);
if (!e.PageSettings.PrinterSettings
.PrintRange.Equals(
PrintRange.CurrentPage)
&& !e.PageSettings.PrinterSettings
.PrintRange.Equals(
PrintRange.Selection)) return;
// else is Selection, do till done.
if (!string.IsNullOrEmpty(
StrToPrint)) PrintThisPageNow(e);
// or CurrentPage. (when applicable)
if (e.PageSettings.PrinterSettings
.PrintRange.Equals(
PrintRange.CurrentPage))
StrToPrint = "";
// CurrentPage ^ Exits cut it short.
}
// Perfected v5.0.6.04 25-Mar-2019 -JpE-
private static void SomePages2(
ref PrintPageEventArgs e)
{
// Skip ahead to the FromPage if needed.
while (++CurrentPage < e.PageSettings
.PrinterSettings.FromPage)
StrToPrint = StrToPrint
.Substring(GetCharsNum(
e, StrToPrint));
PrintThisPageNow(e);
// Print ^ from FromPage to ToPage only.
if (CurrentPage >= e.PageSettings
.PrinterSettings.ToPage)
StrToPrint = "";
// After ToPage cut it short. (Exits)
}
private static int GetCharsNum(
PrintPageEventArgs e, string str2Prnt)
{
int charsOnPage, linesPerPage;
// Atypical
e.Graphics.MeasureString(str2Prnt,
MFC.MyFontDialog.Font,
e.MarginBounds.Size,
StringFormat.GenericTypographic,
out charsOnPage, out linesPerPage);
return charsOnPage;
}
private static void PrintThisPageNow(
PrintPageEventArgs e)
{
var customBrush = new SolidBrush(
MFC.MyFontDialog.Color);
try
{
e.Graphics.DrawString(
StrToPrint,
MFC.MyFontDialog.Font,
customBrush,
e.MarginBounds,
StringFormat.GenericTypographic);
}
finally { customBrush.Dispose(); }
}
//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\
#region Other Available EventHandlers
//public static void
// MyBeginPrintEventHandler(
// object sender, PrintEventArgs e)
//{
// // todos BeginPrint if needed.
// const string txt =
// "Print Job Started.";
// MessageBox.Show(txt);
//}
//public static void
// MyEndPrintEventHandler(
// object sender,
// PrintEventArgs printEventArgs)
//{
// // todos EndPrint if needed.
// // what do sender and event-args
// // contain at this point?
// const string txt =
// "Print Job Completed.";
// MessageBox.Show(txt);
//}
#endregion Other Available Events
//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\
}
}
Comments
0 B
|👍
/👎