Каков путь файла в виде строки файла в ресурсах приложения? - PullRequest
2 голосов
/ 23 января 2010

Причина, по которой я спрашиваю, заключается в том, что я хочу напечатать во время выполнения файл в ресурсах приложения, например:

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim printProcess As New Process
printProcess.StartInfo.CreateNoWindow = True
printProcess.StartInfo.FileName = "C:\Users\Geoffrey van Wyk\Documents\Countdown_Timer_Help.rtf"
printProcess.StartInfo.FileName = My.Resources.Countdown_Timer_Help
printProcess.StartInfo.Verb = "Print"
printProcess.Start()
End Sub 

Когда я использую "C: \ Users \ Geoffrey van Wyk \ Documents \ Countdown_Timer_Help.rtf" в качестве аргумента FileName, это работает. Но когда я использую My.Resources.Countdown_Timer_Help, он говорит, что не может найти файл.

Ответы [ 2 ]

7 голосов
/ 23 января 2010

Нет, вы не получили его, этот файл будет присутствовать только на вашем компьютере разработчика. После развертывания программы файл будет встроен в вашу программу и не может быть распечатан. Вам придется написать код, который сохраняет файл с ресурса на диск, а затем распечатывает его. Например:

  Private Sub btnPrint_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnPrint.Click
    Dim path As String = Application.UserAppDataPath
    path = System.IO.Path.Combine(path, "Help.rtf")
    System.IO.File.WriteAllText(path, My.Resources.Countdown_Timer_Help)
    Dim printProcess As New Process
    printProcess.StartInfo.CreateNoWindow = True
    printProcess.StartInfo.FileName = path
    printProcess.StartInfo.Verb = "Print"
    printProcess.Start()
  End Sub

Учитывая, что вам необходимо сохранить ресурс в файл, возможно, имеет смысл просто развернуть файл вместе с приложением, а не встраивать его как ресурс и записывать его на диск снова и снова. Используйте Application.ExecutablePath, чтобы найти файл. Чтобы это работало во время отладки, вы должны скопировать файл в bin \ Debug. Сделайте это, добавив файл в ваш проект с помощью Project + Add Existing Item и установив для свойства Copy to Output Directory свойство Copy, если новее.

2 голосов
/ 23 января 2010

ОК, я понял.

System.IO.Path.GetFullPath(Application.StartupPath & "\..\..\Resources\") & "Countdown_Timer_Help.rtf"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...