抱歉重复,但我还有另一种情况。我有一个实现 printPreview 和打印过程的小程序。
private void printDocument1_PrintPage(object sender, Drawing.Printing.PrintPageEventArgs e)
{
e.Graphics.DrawString(
"Hello World",
new Font("Times New Roman", 16, FontStyle.Bold),
Brushes.Black, 10, 10);
}
private void button1_Click(object sender, EventArgs e)
{
string str = "";
for (int i = 0; i < PrinterSettings.InstalledPrinters.Count; i++)
{
str += PrinterSettings.InstalledPrinters[i] + "\n";
}
MessageBox.Show(str);
try
{
printPreviewDialog1.Document = printDocument1;
PrinterSettings prnSet = new PrinterSettings();
if (PrinterSettings.InstalledPrinters.Count > 0)
{
PageSettings ps = new PageSettings(prnSet);
ps.Margins.Left = 10;
ps.Margins.Right = 20; ps.Margins.Top = 10; ps.Margins.Bottom = 20;
printPreviewDialog1.ShowDialog();
}
}
catch (Exception ex) { MessageBox.Show(ex.ToString()); }
}
private void button2_Click(object sender, EventArgs e)
{
printDialog1.Document = printDocument1;
printDialog1.ShowDialog();
}
当我从 VS 运行它时,一切正常,但是当我从发布文件夹运行它时 - 我得到了这个异常:
System.ComponentModel.Win32Exception (0x80004005): Server RPC is unavailable
at System.Drawing.Printing.PrinterSettings.get_InstalledPrinters()
at printStudy.Form1.button1_Click(Object sender, EventArgs e) in c:\printStudy\Form1.cs:line 37
at System.Windows.Forms.Control.OnClick(EventArgs e)
at System.Windows.Forms.Button.OnClick(EventArgs e)
at System.Windows.Forms.Button.OnMouseUp(MouseEventArgs mevent)
at System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
at System.Windows.Forms.Control.WndProc(Message& m)
at System.Windows.Forms.ButtonBase.WndProc(Message& m)
at System.Windows.Forms.Button.WndProc(Message& m)
at System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
at System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
我试图重新启动打印机假脱机过程但没有结果。(用户具有管理员权限)。
PS我设置Debug->Exceptions检查VS中抛出的所有内容,因为VS在调试期间向我显示任何异常,但VS启动程序没有任何问题。为什么从发布/调试文件夹运行它时会出现问题?以及如何解决?