printDialog.PrinterSettings.IsValid始终返回true

时间:2016-04-29 21:50:01

标签: c# winforms

我想检查我的defaultprinter是否打开,如果它没有打开,我想选择另一台打印机。我使用下面的代码来检查它是否打开,但它总是返回true。 任何帮助将不胜感激

bool printerIsOnline = false;
printerIsOnline = printDialog.PrinterSettings.IsValid;

1 个答案:

答案 0 :(得分:2)

如果要检查打印机是否为默认打印机,可以使用PrintDialog,如下所示:

printDialog.PrinterSettings.PrinterName = "MyDefaultPrinterName";
bool printerIsOnline = false;
printerIsOnline = printDialog.PrinterSettings.IsDefaultPrinter;

如果要检查打印机是否已打开(已连接),您可以使用WMI class,如下所示:

1-将参考System.Management.dll添加到您的项目中。

2-在代码中使用Reference:

using System.Management;

3 - 使用此代码检查打印机是否在线(已连接):

bool printerIsOnline = true;
string printerName = "MyPrinterName";
string query = string.Format("SELECT * from Win32_Printer WHERE Name LIKE '%{0}'", printerName);
ManagementObjectSearcher searcherPrinters = new ManagementObjectSearcher(query);
foreach (ManagementObject printer in searcherPrinters.Get())
{
    printerIsOnline = !printer["WorkOffline"].ToString().Equals("True");
}

使用此代码,您可以访问打印机的许多属性:

All the properties of the printer