1

这可以以编程方式完成,并且无需创建自定义 PaperSize 而是使用预定义的尺寸吗?众所周知,该打印机支持 Legal 尺寸的纸张。
有没有比遍历打印机的纸张尺寸和扫描Legal子字符串更优雅的解决方案?

更新这就是我最终做的事情:

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
4

2 回答 2

3

这是PaperKind 枚举中的默认条目:

PaperLegal 

(合法,8 1/2 x 14 英寸。)

于 2013-06-16T22:14:44.643 回答
2

我比 VB.NET 更了解 C#,并且在 C# 中我会使用 LINQ 来做到这一点。出于我自己的兴趣,至少这是对 VB.NET LINQ 语法的两次尝试:

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

我猜测语法,所以这些都可能不起作用,我最终得到了至少一样多的代码行,但它节省了编写循环。

于 2013-06-16T23:13:34.377 回答