2013-06-16 2 views
1

Можно ли это сделать программно и без создания пользовательского формата PaperSize, но с использованием предопределенных размеров? Известно, что принтер поддерживает бумагу формата Legal.
Есть ли более элегантное решение, чем зацикливание по размерам бумаги принтера и сканирование для подстроки Legal?Печать принудительной печати на бумаге юридического формата

UPDATE Это то, что я в конечном итоге делает:

For i = 0 To PrintDocument1.PrinterSettings.PaperSizes.Count - 1 
    If PrintDocument1.PrinterSettings.PaperSizes(i).RawKind = PaperKind.Legal Then 
     PrintDocument1.DefaultPageSettings.PaperSize = PrintDocument1.PrinterSettings.PaperSizes(i) 
    Exit For 
    End If 
Next 

ответ

3

Это запись по умолчанию в PaperKind enum:

PaperLegal 

(юридические, 8 1/2 от 14 дюймов.)

+0

Извините, я должен был упомянуть, что это приложение WinForm, написанное на VB.NET. Нет такого перечисления. Установка 'PrintDocument1.DefaultPageSettings.PaperSize.RawKind = PaperKind.Legal' не работает. – mcu

+0

Попробуйте сначала обрезать PaperSize (также тип cast для int), я не знаю, является ли это ошибкой или что-то еще, но в прошлом я обнаружил, что изменение размера бумаги часто не работает, если оно уже было задавать. 'PrintDocument1.DefaultPageSettings.PaperSize = null; PrintDocument1.DefaultPageSettings.PaperSize.RawKind = (int) PaperKind.Legal; ' – Alfie

+0

Просто попробовал следующее, и все равно не нужно идти. 'PrintDocument1.DefaultPageSettings.PaperSize = Nothing PrintDocument1.DefaultPageSettings.PaperSize.RawKind = CInt (PaperKind.Legal)' – mcu

2

Я знаю, что C# лучше, чем VB.NET, и в C# я бы это сделал с помощью LINQ. Для моего собственного интереса, по крайней мере, вот две попытки синтаксиса LINQ VB.NET:

Dim paperSize as PaperSize = _ 
    From ps in PrintDocument1.PrinterSettings.PaperSizes _ 
    Where ps.RawKind = PaperKind.Legal _ 
    Select ps Take 1 
If paperSize IsNot Nothing 
    DocPrint.DefaultPageSettings.PaperSize = paperSize 
End If 

или

Dim paperSize = PrintDocument1.PrinterSettings.PaperSizes _ 
       .FirstOrDefault(Function(ps) ps.RawKind = PaperKind.Legal) 
If paperSize IsNot Nothing 
    DocPrint.DefaultPageSettings.PaperSize = paperSize 
End If 

Я предполагаю, что синтаксис, ни один из них может работать, и я закончил с по крайней мере, столько строк кода, но оно сохраняет запись цикла.

+0

Gotta love LINQ. – mcu

Смежные вопросы