可以将“页面设置”和“打印机设置”显示为无模式吗?我使用如下代码,但表单显示为模态形式:
// page setup
private void btnPageSetup_Click(object sender, EventArgs e)
{
this.pageSetupDialog1.PageSettings = new PageSettings();
this.pageSetupDialog1.PrinterSettings = this.printDocument1.PrinterSettings;
this.pageSetupDialog1.ShowDialog();
if (this.pageSetupDialog1.PageSettings != null)
{
this.printDocument1.DefaultPageSettings = this.pageSetupDialog1.PageSettings;
}
}
// print setup
private void btnPrintSetup_Click(object sender, EventArgs e)
{
this.pageSetupDialog1.Document = this.printDocument1;
if (this.pageSetupDialog1.ShowDialog() == DialogResult.OK)
{
this.printDocument1.Print();
}
}
答案 0 :(得分:0)
您可以通过调用Show
而不是ShowDialog
来将表单显示为非模态。
但是,您还需要对代码进行随机播放,因为您的主窗体将不再等待其中一个子窗体关闭,以便检查用户的操作。
例如,您必须更改“打印设置”代码,以便在用户点击PageSetupDialog
时OK
打印文档本身,而不是依赖于用户点击OK
时的主要表单。
同样,您需要更改页面设置代码,以便PageSetupDialog
设置Document.DefaultPageSettings
本身,而不是{{1}中的“返回”设置}属性并依赖于处理它们的主表单。
答案 1 :(得分:0)
使用系统命名空间System.Drawing.Printing
,您可以初始化pageSetup的新对象,并将其显示为对话框,如下例所示:
private void pageSetupToolStripMenuItem_Click(object sender, EventArgs e)
{
PageSetupDialog pgSetup = new PageSetupDialog();
pgSetup.PageSettings = new System.Drawing.Printing.PageSettings();
pgSetup.PrinterSettings = new System.Drawing.Printing.PrinterSettings();
pgSetup.ShowNetwork = false;
pgSetup.ShowDialog();
}
上面的msdn示例基本上说明了如何使用PageSetup,有关更详细的示例,请参阅此extended example。
对于PrinterSettings
使用与PageSetup相同的命名空间,请参阅msdn和此extended example中的此示例。