C# と VB.NET の質問掲示板

わんくま同盟

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

ツリー一括表示

コンボボックスにプリンター名が追加されない /YKT (17/05/14(Sun) 20:58) #84088
Re[1]: コンボボックスにプリンター名が追加されない /魔界の仮面弁士 (17/05/14(Sun) 23:36) #84089
  └ Re[2]: コンボボックスにプリンター名が追加されない /YKT (17/05/15(Mon) 22:13) #84098
    └ Re[3]: コンボボックスにプリンター名が追加されない /魔界の仮面弁士 (17/05/15(Mon) 22:47) #84099
      └ Re[4]: コンボボックスにプリンター名が追加されない /YKT (17/05/15(Mon) 23:01) #84100 解決済み


親記事 / ▼[ 84089 ]
■84088 / 親階層)  コンボボックスにプリンター名が追加されない
□投稿者/ YKT (1回)-(2017/05/14(Sun) 20:58:42)

分類:[.NET 全般] 

開発環境 Windows 7
Visual Basic2010 Proffessional

コンボボックスにプリンタ名が追加れないことで悩んでいます。
ネットを見ましたが解決できていません。
ご教授いただければと思います。


Private Sub frmBrowsePrinter_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
Dim prtPrinter As New System.Drawing.Printing.PrintDocument


'プリンタ名の取得
Dim PrinterName As String = prtPrinter.PrinterSettings.PrinterName

Dim intIndex As Integer

Me.cboPrinter.Items.Clear()
Me.cboSize.Items.Clear()
Me.cboWise.Items.Clear()
''プリンタ名追加
intIndex = -1

Me.cboPrinter.SelectedIndex = intIndex
For Each PrinterName In System.Drawing.Printing.PrinterSettings.InstalledPrinters
Me.cboPrinter.Items.Add(PrinterName)
If prtPrinter.PrinterSettings.PrinterName = PrinterName Then
intIndex = Me.cboPrinter.Items.Count - 1
End If
Next



'有効なプリンタがあるとき
If intIndex >= 0 Then
Me.cboPrinter.SelectedIndex = intIndex

'有効なプリンタがないとき
Else

End If

Me.cboPrinter.DropDownStyle = ComboBoxStyle.DropDownList


End Sub
[ □ Tree ] 返信 編集キー/

▲[ 84088 ] / ▼[ 84098 ]
■84089 / 1階層)  Re[1]: コンボボックスにプリンター名が追加されない
□投稿者/ 魔界の仮面弁士 (1277回)-(2017/05/14(Sun) 23:36:00)
2017/05/15(Mon) 07:41:12 編集(投稿者)

No84088 (YKT さん) に返信
> コンボボックスにプリンタ名が追加れないことで悩んでいます。
まず、元のコードにおいて
 Dim PrinterName As String
には何がセットされているのでしょうか?

そして System.Drawing.Printing.PrinterSettings.InstalledPrinters.Count は
どのような値を返してきますか? これが 0 を返すなら、そもそも
利用可能なプリンターが存在していない可能性が出てきます。


> Me.cboSize.Items.Clear()
> Me.cboWise.Items.Clear()

この 2 つは特に使われていないようですが、今回の質問とは無関係なのでしょうか。
(size は "サイズ" のことだとして…、wise は "賢明な" ?)


> Dim prtPrinter As New System.Drawing.Printing.PrintDocument
既定のプリンターを得たいだけなら、PrintDocument を経由せずとも
PrinterSettings だけで辿れますよ。

'Imports System.Drawing.Printing

Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
  Dim printerNames = PrinterSettings.InstalledPrinters.OfType(Of String)().ToArray()
  'Array.Sort(printerNames)
  cboPrinter.DataSource = printerNames
  cboPrinter.SelectedIndex = Array.IndexOf(printerNames, New PrinterSettings().PrinterName)
End Sub
[ 親 84088 / □ Tree ] 返信 編集キー/

▲[ 84089 ] / ▼[ 84099 ]
■84098 / 2階層)  Re[2]: コンボボックスにプリンター名が追加されない
□投稿者/ YKT (2回)-(2017/05/15(Mon) 22:13:16)
Dim PrinterName As String
プリンター名がセットされています。
順番にプリンタ名がコンボボックスにADDされているのですが
コンボボックスの中は、ADDされている感じは、ありますが文字が全く見えません。
System.Drawing.Printing.PrinterSettings.InstalledPrinters.Count は、プリンターに表示されている通り5個です。


No84089 (魔界の仮面弁士 さん) に返信
> 2017/05/15(Mon) 07:41:12 編集(投稿者)
>
> ■No84088 (YKT さん) に返信
>>コンボボックスにプリンタ名が追加れないことで悩んでいます。
> まず、元のコードにおいて
>  Dim PrinterName As String
> には何がセットされているのでしょうか?
>
> そして System.Drawing.Printing.PrinterSettings.InstalledPrinters.Count は
> どのような値を返してきますか? これが 0 を返すなら、そもそも
> 利用可能なプリンターが存在していない可能性が出てきます。
>
>
>>Me.cboSize.Items.Clear()
>>Me.cboWise.Items.Clear()
>
> この 2 つは特に使われていないようですが、今回の質問とは無関係なのでしょうか。
> (size は "サイズ" のことだとして…、wise は "賢明な" ?)
>
>
>>Dim prtPrinter As New System.Drawing.Printing.PrintDocument
> 既定のプリンターを得たいだけなら、PrintDocument を経由せずとも
> PrinterSettings だけで辿れますよ。
>
> 'Imports System.Drawing.Printing
>
> Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
>   Dim printerNames = PrinterSettings.InstalledPrinters.OfType(Of String)().ToArray()
>   'Array.Sort(printerNames)
>   cboPrinter.DataSource = printerNames
>   cboPrinter.SelectedIndex = Array.IndexOf(printerNames, New PrinterSettings().PrinterName)
> End Sub
[ 親 84088 / □ Tree ] 返信 編集キー/

▲[ 84098 ] / ▼[ 84100 ]
■84099 / 3階層)  Re[3]: コンボボックスにプリンター名が追加されない
□投稿者/ 魔界の仮面弁士 (1279回)-(2017/05/15(Mon) 22:47:43)
No84098 (YKT さん) に返信
> 順番にプリンタ名がコンボボックスにADDされているのですが
> コンボボックスの中は、ADDされている感じは、ありますが文字が全く見えません。


ということは、登録される内容が「プリンター名」であるかどうかは関係なく、
.Items.Add しているのに、文字列が見えないという状況だということですね。

おそらくは、誤って DrawMode プロパティを Normal 以外に変更してしまったのではないでしょうか。



> プリンター名がセットされています
> 順番にプリンタ名がコンボボックスに
> プリンターに表示されている通り

"プリンター" 表記と "プリンタ" 表記が混在しているようですね。

現在の Windows では「プリンター」表記に統一されていたりします。
http://www.atmarkit.co.jp/news/200807/25/microsoft.html
[ 親 84088 / □ Tree ] 返信 編集キー/

▲[ 84099 ] / 返信無し
■84100 / 4階層)  Re[4]: コンボボックスにプリンター名が追加されない
□投稿者/ YKT (3回)-(2017/05/15(Mon) 23:01:29)
解決しました。
ありがとうございました。
No84099 (魔界の仮面弁士 さん) に返信
> ■No84098 (YKT さん) に返信
>>順番にプリンタ名がコンボボックスにADDされているのですが
>>コンボボックスの中は、ADDされている感じは、ありますが文字が全く見えません。
>
>
> ということは、登録される内容が「プリンター名」であるかどうかは関係なく、
> .Items.Add しているのに、文字列が見えないという状況だということですね。
>
> おそらくは、誤って DrawMode プロパティを Normal 以外に変更してしまったのではないでしょうか。
>
>
>
>>プリンター名がセットされています
>>順番にプリンタ名がコンボボックスに
>>プリンターに表示されている通り
>
> "プリンター" 表記と "プリンタ" 表記が混在しているようですね。
>
> 現在の Windows では「プリンター」表記に統一されていたりします。
> http://www.atmarkit.co.jp/news/200807/25/microsoft.html
解決済み
[ 親 84088 / □ Tree ] 返信 編集キー/


管理者用

- Child Tree -