2012-06-15 38 views
1

我編寫了代碼以獲取安裝在我係統中的打印機的名稱,但我不知道要獲取該打印機的端口名稱。這裏是我寫的代碼。如何在wpf中獲取默認選定打印機的端口名稱

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; 
    } 

它的結果會是這樣

printer

enter image description here

我得選擇打印機端口名稱 「DOP7」(如下圖所述)。請幫助我。

回答

2

你試過PrintQueue.QueuePort Property

string default_port = DefaultPrinter.QueuePort.Name; 

更新:

然後我建議添加PrintQueue目的是ComboBox

public MainWindow() 
{ 
    InitializeComponent(); 

    PrintServer server = new PrintServer(); 

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

並使用DisplayMemberPath用於示出FullName

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

在EventHandler中你可以得到像這樣的端口名稱:

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

非常感謝。我得到了我需要的東西。但是我需要得到選擇項目的(從組合框項目)queuepot name.i的意思是如果我從組合框中選擇傳真,我必須得到選擇項目queueport name.pleae幫助我。 –

+0

然後另一件事是,我必須得到選定的項目的波特率,數據位,奇偶校驗,停止位,端口和流量CONTROL.pleae LPL幫助我完全希望你... –

+1

請參閱我的編輯。爲了從QueuePort獲得[SerialPort類屬性](http://msdn.microsoft.com/en-us/library/system.io.ports.serialport_properties),請提出一個單獨的問題。 – LPL

相關問題