如何在C#中设置Windows默认打印机?

时间:2009-06-09 18:04:09

标签: c# windows printing

如何在C#.NET中设置Windows默认打印机?

5 个答案:

答案 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。

Here's how to pInvoke that.

答案 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)