当我尝试打印我正在搜索的文件的内容时,为什么会出现错误?

时间:2017-06-08 15:23:41

标签: vb.net file-io

您可以帮我搜索和打印textbox1中文字指定的文件吗?我有以下代码,但textbox1向我显示错误。我不知道代码是否写得正确且运行正常。

头等舱:

Public Class tisk
    'print 
    Public Shared Function printers()
        Dim printThis
        Dim strDir As String
        Dim strFile As String
        Dim Textbox1 As String



        strDir = "C:\_Montix a.s. - cloud\iMontix\Testy"
        strFile = "C:\_Montix a.s. - cloud\iMontix\Testy\" & Textbox1.text & ".lbe"


        If Not fileexprint.FileExists Then
            MsgBox("Soubor neexistuje")
            printers = False
        Else

            fileprint.PrintThisfile()
            printers = True

        End If
    End Function

End Class

第二课:

Public Class fileprint
    Public Shared Function PrintThisfile()
        Dim formname As Long
        Dim FileName As String

        On Error Resume Next
        Dim X As Long
        X = Shell(formname, "Print", FileName, 0&)
    End Function
End Class

第三课:

Public Class fileexprint
    Public Shared Function FileExists()
        Dim fname As Boolean
        '   Returns TRUE if the file exists
        Dim X As String
        X = Dir(fname)
        If X <> "" Then FileExists = True _
        Else FileExists = False
    End Function
End Class

当我用文本填充文本框时,如何使用此文本在计算机中搜索文件并打印此文件?

2 个答案:

答案 0 :(得分:0)

您的“Textbox1”是一个变量,实际上并没有从文本框中获取值。如果我没错,我相信你打算获得一个文本框的值并连接起来形成你的目录网址。您首先需要在Windows / Web表单中添加一个文本框,为该文本框指定一个id,然后在您的代码中调用该ID。例如。你添加一个id为“textbox001”的文本框,在你的代码后面你会做类似“textbox001.text”的事情。在你的情况下,它现在将是:strFile =“C:_Montix a.s. - cloud \ iMontix \ Testy \”&amp; textbox001.text&amp; “.lbe”。希望这会有所帮助。

答案 1 :(得分:0)

不确定这会解决您的问题,但该代码中存在一些不良做法,这些做法将在下面解决。这肯定会让你比现在更接近。

Public Class tisk
    'print 
    Public Shared Function printers(ByVal fileName As String) As Boolean
        Dim basePath As String = "C:\_Montix a.s. - cloud\iMontix\Testy"
        Dim filePath As String = IO.Path.Combine(basePath, fileName & ".lbe")

        If IO.File.Exists(filePath) Then
            fileprint.PrintThisfile(filePath)
            Return True
        End If
        'Don't show a message box here. Do it in the calling code
        Return False
    End Function
End Class

Public Class fileprint
    Public Shared Sub PrintThisfile(ByVal fileName As String)
        'Not sure how well this will work, but it has better chances than the original
        Dim p As New Process()
        p.StartInfo.FileName = fileName
        p.StartInfo.Verb = "Print"
        p.Start()
    End Sub
End Class

File.Exists()检查的另外一条评论。实际上很难检查文件是否存在于此处。文件系统是 volatile 。在您检查和尝试使用文件之间的短时间内,事情可能会发生变化。此外,文件是否存在只是您需要查看的一个事物。还有访问权限以及文件是锁定还是正在使用。更好的做法是只是尝试用文件做任何你需要的事情,然后在失败时处理异常。