问题描述
我会用 Windows 窗体在 C# 中制作一个简单的程序,由于一些文本框,它会获取用户提供的一些数据,当他按下按钮时,一个 dialog
(我不知道是哪个)显示,以便浏览 pc 文件夹并选择将其保存在那里的目的地。
好吧,我使用了 FolderbrowserDialog
(我不知道这是否适合该目的),但是有一个问题:为了使用 itext7 存储 PDF,我必须给出一个 {{ 1}} 变量,而获取 formbrowserDialog 用户路径的方法 Environment.SpecialFolder
返回一个字符串。
我试图以某种方式将 selectedpath()
转换为 string
,但我总是得到 Environment.SpecialFolder
这是我的代码:
System.ArgumentException
解决方法
为了简化这一切,您根本不需要 Environment.SpecialFolder
变量,也不需要将其作为参数传递。
抛出异常的原因是您尝试将 string
解析为 Environment.SpecialFolder
变量 enum
,而字符串无法解析为一个。
您可以查看 here 以查看包含的枚举列表。我敢打赌,您选择的特定路径与这些都不匹配。
以下是您的代码当前正在执行的操作:
- 选择路径
- 尝试解析该路径以获取
enum
特殊文件夹 - 试图获取与之关联的字符串
Environment.SpecialFolder
变量(所以如果你真的 能够解析它,你最终会得到你开始的东西 与) - 将该字符串与您想要为 PDF 提供的名称组合。
您可以通过省略导致错误的步骤 2 和 3 来简化所有这些。
string pdfName = surname+ " - " + hours + "ː" + minutes + ".pdf";
//You select the folder here
if (fbd.ShowDialog() == DialogResult.OK)
{
string folder = fbd.SelectedPath;
//combine the path of the folder with the pdf name
string exportFile = System.IO.Path.Combine(folder,pdfName);
using (var writer = new PdfWriter(exportFile))
{
using (var pdf = new PdfDocument(writer))
{
var doc = new Document(pdf);
doc.Add(new Paragraph("//bla bla bla writing my things on it"));
}
}
//Pdf creation ends
}