我遇到了问题,我正在开发一个WPF应用程序,我有一个名为“help”的页面,只有一个按钮 go 当用户单击此按钮时,我必须向帮助文件夹中的用户提供pdf文件。 现在我的问题是如果我写这样的路径
**string pdfurl1 = ((@"D:\addnkit\projects\wdine\widdne_working\Wdine Us\Wddine\Wine\Help\Emerald Wine Dispensing Software.pdf"));
System.Diagnostics.Process.Start(pdfurl1);**
它成功运作
但我知道这不会在其他电脑上运行,所以我想知道如何编写可在任何电脑上运行的相同代码
我也尝试过这样的
(@"pack://application:,,,/Widne;component/help/mypdf.pdf"
但它不起作用
[更新]
我已经尝试了所有的解决方案,但它还没有工作但我不知道为什么? 请再次检查 Widne>>帮助>> mypdf
答案 0 :(得分:7)
使用你的exe的路径
System.AppDomain.CurrentDomain.BaseDirectory
string path = System.IO.Path.GetDirectoryName(System.Diagnostics.Process.GetCurrentProcess().MainModule.FileName)
+ "\\Widne\\component\\help\\mypdf.pdf";
System.Diagnostics.Process.Start(path )
更新:
申请他必须存在的文件,在这种情况下,您将该属性设为PDF文件Copy to Output Directory
至Copy always
答案 1 :(得分:4)
第二种方法packuri
是你应该使用的。
您的问题很可能是您的mypdf.pdf
需要在Visual Studio中更改它的属性,以便它在构建时实际复制pdf文件而不是嵌入到应用程序中,从而阻止最终用户阅读pdf文件。
在pdf文件上设置这些属性并重建应用程序
构建行动:内容
复制到输出目录:始终复制
编辑:查看this answer以获取有关构建操作的说明。
答案 2 :(得分:1)
您可以使用相对路径:
./ - start at the .exe directory
../ - go up one folder from the .exe
../../ - go up two folders etc.
编辑:
假设你的.exe文件夹在bin文件夹中:
**string pdfurl1 = ((@"..\Help\Emerald Wine Dispensing Software.pdf"));
System.Diagnostics.Process.Start(pdfurl1);**
答案 3 :(得分:1)
Diagnostics.Process
类与WPF无关。如果路径相对于您的应用程序,则可以使用相对路径。如果您担心应用程序使用与存储程序集的目录不同的工作目录运行,则可以使用
Assembly.GetExecutingAssembly().CodeBase
并使用Path.Combine
构建PDF的路径。
答案 4 :(得分:0)
您可以使用Directory.GetCurrentDirectory()
。这将为您提供启动应用程序的目录。因此,如果您将文件放在应用程序启动的位置,它将是这样的:
string pdfurl1 = ((Directory.GetCurrentDirectory() + "\Emerald Wine Dispensing Software.pdf"));
System.Diagnostics.Process.Start(pdfurl1);
答案 5 :(得分:0)
也许here的答案可以帮助你
使用Path类来构建路径。它会做正确的事。
对包含文件或目录的String实例执行操作 路径信息。这些操作在跨平台中执行 方式。
var full = Path.Combine(baseDir, dirFragment);
答案 6 :(得分:0)
对于目录对话框以获取目录路径,首先添加引用System.Windows.Forms,然后单击Resolve,然后将此代码放在按钮单击中。
var dialog = new FolderBrowserDialog();
dialog.ShowDialog();
folderpathTB.Text = dialog.SelectedPath;
(folderpathTB是TextBox的名称,我将wana放在文件夹路径中,或者你也可以将它分配给字符串变量,例如。)
string folder = dialog.SelectedPath;
如果您获得FileName / path,只需在Button Click
上执行此操作 FileDialog fileDialog = new OpenFileDialog();
fileDialog.ShowDialog();
folderpathTB.Text = fileDialog.FileName;
(folderpathTB是TextBox的名称,我将wana放入文件路径,或者你也可以将它分配给字符串变量)
注意:对于Folder Dialog,必须将System.Windows.Forms.dll添加到项目中,否则它将无效。
答案 7 :(得分:0)