如何在C#.NET中设置Windows默认打印机?
答案 0 :(得分:29)
using System;
using System.Drawing.Printing;
using System.Windows.Forms;
using System.Runtime.InteropServices;
namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
private void listAllPrinters()
{
foreach (var item in PrinterSettings.InstalledPrinters)
{
this.listBox1.Items.Add(item.ToString());
}
}
private void listBox1_SelectedValueChanged(object sender, EventArgs e)
{
string pname = this.listBox1.SelectedItem.ToString();
myPrinters.SetDefaultPrinter(pname);
}
public Form1()
{
InitializeComponent();
listAllPrinters();
}
}
public static class myPrinters
{
[DllImport("winspool.drv", CharSet = CharSet.Auto, SetLastError = true)]
public static extern bool SetDefaultPrinter(string Name);
}
}
答案 1 :(得分:16)
使用SetDefaultPrinter Windows API。
答案 2 :(得分:1)
步骤1:将以下代码粘贴到.cs文件中的任意位置
public static class PrinterClass
{
[DllImport("winspool.drv", CharSet = CharSet.Auto, SetLastError = true)]
public static extern bool SetDefaultPrinter(string Printer);
}
第2步:添加必要的命名空间,即
using System.Runtime.InteropServices;
第3步:使用以下功能将所需的打印机设置为默认打印机。
PrinterClass.SetDefaultPrinter("Paste your desired Printer Name here");
第4步:要获取连接到PC的所有打印机的列表,可以使用此代码。
private void FillListBox()
{
foreach (var p in PrinterSettings.InstalledPrinters)
{
cmbdefaultPrinter.Properties.Items.Add(p);
}
}
//Here cmbdefaultPrinter is a combobox, you can fill the values into a list.
上述代码所需的命名空间为:
using System.Drawing.Printing;
using System.Runtime.InteropServices;
答案 3 :(得分:-1)
以下是如何在不使用.NET应用程序范围内的Win32API的情况下使用C#.NET。 Win32API方法在应用程序关闭后保留默认打印机。
using System.Drawing.Printing;
namespace MyNamespace
{
public class MyPrintManager
{
public static PrinterSettings MyPrinterSettings = new PrinterSettings();
public static string Default_PrinterName
{
get
{
return MyPrinterSettings.PrinterName;
}
set
{
MyPrinterSettings.DefaultPageSettings.PrinterSettings.PrinterName = value;
MyPrinterSettings.PrinterName = value;
}
}
}
}
答案 4 :(得分:-2)