美好的一天。 在我的C#Windows Forms应用程序中,我想打开.pdf文件。 为此的代码是:
private void btnOpenPdf_Click(object sender, EventArgs e)
{
try
{
System.Diagnostics.Process.Start(lblPdf.Text);
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
.pdf文件路径存储在SQL数据库中。 它们以这种方式存储:C:\ Folder1 \ Folder2 \ File Name
在此示例中,这意味着:
lblPdf.Text="C:\Folder1\Folder2\File Name";
*注意:文件名存储时没有文件类型(因此末尾没有.pdf)
当然这是行不通的,所以我在字符串中添加了“ @”和“ .pdf”:
lblTest.Text = ("@" + "\"" + lblPdf.Text + ".pdf" + "\"");
当我通过消息框对此进行测试时:
MessageBox.Show(lblTest);
我得到:
@"C:\Folder1\Folder2\File Name.pdf"
我遇到的麻烦是这可行:
private void btnOpenPdf_Click(object sender, EventArgs e)
{
try
{
MessageBox.Show(lblTest.Text);
System.Diagnostics.Process.Start(@"C:\Folder1\Folder2\File Name.pdf");
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
这不起作用:
private void btnOpenPdf_Click(object sender, EventArgs e)
{
try
{
MessageBox.Show(lblTest.Text);
System.Diagnostics.Process.Start(lblTest.Text);
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
任何人都可以阐明为什么会这样吗?
在第二个示例中收到的错误消息是: “系统找不到指定的文件”
MessageBox.Show在两种情况下都为我提供了正确的语法和文件路径。
谢谢。
答案 0 :(得分:0)
@Shovers及其可能涉及的其他人
private void btnOpenPdf_Click(object sender, EventArgs e)
{
lblTest.Text = ("@" +lblPdf.Text + ".pdf" );
try
{
MessageBox.Show(lblTest.Text);
System.Diagnostics.Process.Start(lblTest.Text);
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
答案 1 :(得分:0)
谢谢大家。
只需添加
+ ".pdf"
标签(lblPdf.Text
)就是答案。
private void btnOpenPdf_Click(object sender, EventArgs e)
{
try
{
System.Diagnostics.Process.Start(lblPdf.Text + ".pdf");
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
答案 2 :(得分:-2)
我可以给您一些提示:
1个例外
正确的异常处理是我的宠儿,而您却遇到了麻烦。您的代码处理致命异常。永远不要捕捉致命的异常是非常重要的部分。这样做只会为您带来越来越少的可理解的后续错误。这是我经常联系的两个主理:
https://blogs.msdn.microsoft.com/ericlippert/2008/09/10/vexing-exceptions/
https://www.codeproject.com/Articles/9538/Exception-Handling-Best-Practices-in-NET
2。这些PDF如何与数据库一起存储?
PDF是二进制大对象(BLOBS)。那里有两个学校可以存储带有数据库的Blob,并且都影响您必须提供的路径: