In my C# Winforms project I have some printed reports with the option for print preview. When the print preview menu option is clicked I show my report preview. When this happens the report preview ShowDialog method displays a "Generating Preview" message on the screen. This message always shows on the main monitor even if the user has the application opened on a second monitor. I do have code to position the print preview form wherever the user has last viewed it. The print preview form works fine. It's just the "Generating Preview" message box that is on the wrong monitor.
Can this "Generating Preview" message be positioned or moved?
Here is my code for generating the print preview:
private void ElementReportPrintPreview(ElementReportDocument document)
{
if (document == null)
return;
try
{
document.DefaultPageSettings = ElementPageSettings;
ReportPreview reportPreview = new ReportPreview(document, true, true);
if (settings.PrintPreviewWindowStatesValid)
{
reportPreview.StartPosition = FormStartPosition.Manual;
reportPreview.Size = settings.PrintPreviewWindowSize;
reportPreview.Location = settings.PrintPreviewWindowLocation;
if ((FormWindowState)settings.PrintPreviewWindowState != FormWindowState.Minimized)
{
reportPreview.WindowState = (FormWindowState)settings.PrintPreviewWindowState;
}
reportPreview.ZoomFactor = settings.PrintPreviewZoom;
}
reportPreview.ShowDialog();
ElementPageSettings = reportPreview.PageSettings;
saveElementPageSetup();
settings.PrintPreviewZoom = reportPreview.ZoomFactor;
settings.PrintPreviewWindowLocation = reportPreview.Location;
settings.PrintPreviewWindowState = (int)reportPreview.WindowState;
if (reportPreview.WindowState != FormWindowState.Normal)
{
settings.PrintPreviewWindowSize = reportPreview.RestoreBounds.Size;
settings.PrintPreviewWindowLocation = new Point(reportPreview.RestoreBounds.Location.X, reportPreview.RestoreBounds.Y);
}
else
{
settings.PrintPreviewWindowSize = reportPreview.Size;
settings.PrintPreviewWindowLocation = reportPreview.DesktopLocation;
}
settings.PrintPreviewWindowStatesValid = true;
}
catch (Exception e)
{
MessageBox.Show(this, e.Message, "Print Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
}