我打印了包含多个“\”但“\S”变成了“1”的文本

I printed text that contains multiple "\"'s but "\S" turned into a "1"

所以我的窗体上有一个 C1TrueDBGrid(它是一个 ComponentOne 控件),我让用户可以选择打印网格的内容。

打印时,我在 header 中添加了一些文字。这是我的打印代码:

    Dim dlgPrint As New PrintDialog
    dlgPrint.ShowDialog()

    dgvList.PrintInfo.PrintEmptyGrid = False
    dgvList.PrintInfo.PageHeader = txtDirectory.Text & Environment.NewLine & "Search Term: " & txtSearch.Text & Environment.NewLine
    dgvList.PrintInfo.PageSettings.Landscape = True
    dgvList.PrintInfo.WrapText = C1.Win.C1TrueDBGrid.PrintInfo.WrapTextEnum.Wrap
    dgvList.PrintInfo.RepeatColumnHeaders = True

    dgvList.PrintInfo.Print(dlgPrint.PrinterSettings)

    dlgPrint.Dispose()

txtDirectory.Text 正如我相信您可以想象的那样包含目录的路径,其中包括 back-slashes \ 。实际打印的内容将 \S 的实例变成了 1.

例如:txtDirectory.Text = \\Server02\Users\Me\J\Star

打印的页面 = erver02\Users\Me\J1tar

“\S”是“1”之类的打印机命令吗?如果是这样的话,是否有所有此类命令的列表?无论哪种方式,如何让它打印实际文本?

谢谢!

您将该文本设置为 PageHeader,according to ComponentOne\S 是一个特殊字符,表示 returns 子页面总数,或者您的“1”例子。您将需要对该页面的列表中的任何字符进行两次转义。

更新已发布到 this ComponentOne forum thread

所以我所做的就是简单地将我想要打印的字符串分配给一个变量printText,然后相应地替换那些特殊字符:

    printText.Replace("\t", "\t")
    printText.Replace("\p", "\p")
    printText.Replace("\P", "\P")
    printText.Replace("\g", "\g")
    printText.Replace("\G", "\G")
    printText.Replace("\s", "\s")
    printText.Replace("\S", "\S")

请注意,“\\t”还没有像其他的那样工作...他们正在研究它。

感谢@DonBoitnott 的原创 link!