CHANDRA
CHANDRA

Reputation: 4938

how to get default selected printer's port name in wpf

I wrote code to get name of printer which is installed in my system.but i don't know to get that printers port name. here the code what i wrote.

public MainWindow()
    {
        this.InitializeComponent();

        PrintServer server = new PrintServer();

        foreach (PrintQueue queue in server.GetPrintQueues())
        {
            cboPrinters.Items.Add(queue.FullName);
        }

        var DefaultPrinter = new LocalPrintServer().DefaultPrintQueue;
        string default_name=DefaultPrinter.FullName;

        txxt_default.Text = "The default printe is "+" "+default_name;
    }

it's result will be like this

printer

enter image description here

i have to get selected printer's port name "DOP7"(mentioned below figure).please help me.

Upvotes: 1

Views: 2453

Answers (1)

LPL
LPL

Reputation: 17083

Have you tried PrintQueue.QueuePort Property?

string default_port = DefaultPrinter.QueuePort.Name;

Update:

Then I recommend adding PrintQueue object to ComboBox

public MainWindow()
{
   InitializeComponent();

   PrintServer server = new PrintServer();

   foreach (PrintQueue queue in server.GetPrintQueues())
   {
      cboPrinters.Items.Add(queue);
   }
}

and using DisplayMemberPath for showing the FullName:

<ComboBox Name="cboPrinters"
          DisplayMemberPath="FullName"
          SelectionChanged="cboPrinters_SelectionChanged" />

In EventHandler you can get port name like this:

private void cboPrinters_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
   PrintQueue printer = cboPrinters.SelectedItem as PrintQueue;
   string portname = printer.QueuePort.Name;
}

Upvotes: 2

Related Questions