如何通过对话框C#允许用户选择保存位置而不选择文件名

问题描述 投票:0回答:2

我已经制作了一个税收计算器(从理论上来说都是实用的),它具有一项功能,用户可以按此按钮来导出基本的PDF税收报告。税收报告的要求略有不同,具体取决于它是雇员​​还是承包商。承包商通过以“ C”开头的EmployeeID来表示。 到目前为止一切顺利

现在我只要求承包商将承包商PDF保存为特定名称“ ContractorTax”是否有一种安全的文件对话框,仅允许用户在锁定文件名(并且我猜为文件扩展名)的同时选择位置。

这是我到目前为止拥有的相关代码:

   //Creates PDF.
        private void CreatePdf()
        {           
            //sets default options for save file
            saveFileDialog1.FileName = "Tax Report for " + txtFirstName.Text + " " + txtSurname.Text;
            saveFileDialog1.Filter = "PDF files (*.pdf)|*.pdf|All files (*.*)|*.*";
            saveFileDialog1.DefaultExt = "pdf";
            saveFileDialog1.ShowDialog();

            /*- create FileStream object (fs) with pdf name, mode type, access type, and if it can be shared 
              - create new document object (A4 page size)
              - create a iTextSharp.text.pdf.PdfWriter object, it helps to write the Document to the Specified
                FileStream 
              - open document
              - add paragraph
              - close document*/

            if (txtEmployeeID.Text.ToUpper().StartsWith("C"))
            {
                FileStream fs = new FileStream(saveFileDialog1.FileName, FileMode.Create, FileAccess.Write, FileShare.None);
                Document doc = new Document(PageSize.A4);
                PdfWriter writer = PdfWriter.GetInstance(doc, fs);
                doc.Open();

                doc.Add(new Paragraph("TAX REPORT" + nl + nl + "Employee ID: " + txtEmployeeID.Text.ToUpper() + nl + "Name: " + txtFirstName.Text + " " + txtSurname.Text + nl + "Mobile Number: " + txtMobileNumber.Text + nl +
                        "Email: " + txtEmail.Text + nl + "Department: " + comboBoxDepartment.Text + nl + "Salary: $" + salary.ToString() + nl + "Tax Payable: $" + taxPayable.ToString()));
                doc.Close();

            }
            else
            {
                FileStream fs = new FileStream(saveFileDialog1.FileName, FileMode.Create, FileAccess.Write, FileShare.None);
                Document doc = new Document(PageSize.A4);
                PdfWriter writer = PdfWriter.GetInstance(doc, fs);
                doc.Open();

                doc.Add(new Paragraph("TAX REPORT" + nl + nl + "Employee ID: " + txtEmployeeID.Text.ToUpper() + nl + "Name: " + txtFirstName.Text + " " + txtSurname.Text + nl + "Mobile Number: " + txtMobileNumber.Text + nl +
                        "Department: " + comboBoxDepartment.Text + nl + "Salary: $" + salary.ToString() + nl + "Tax Payable: $" + taxPayable.ToString()));
                doc.Close();
            }



        }

我之前发现了这个问题,但答案仅与Java有关,并且我正在使用Visual Studio 2017和C#进行编码。

c# visual-studio visual-studio-2017
2个回答
0
投票

对于您的问题,您希望指定雇主的税收收据的名称,并且不能更改。

您可以尝试以下代码来获取它。

private void CreatePdf()
    {         
        string path1 = "ContractorTax.pdf";
        if (txtEmployeeID.Text.ToUpper().StartsWith("C")) 
        {

            FolderBrowserDialog dialog = new FolderBrowserDialog();
            dialog.ShowDialog();
            string path2 = Path.Combine(dialog.SelectedPath, path1);
            FileStream fs = new FileStream(path2, FileMode.Create, FileAccess.Write, FileShare.None);
            Document doc = new Document(PageSize.A4);
            PdfWriter writer = PdfWriter.GetInstance(doc, fs);
            doc.Open();

            doc.Add(new Paragraph("TAX REPORT" + nl + nl + "Employee ID: " + txtEmployeeID.Text.ToUpper() + nl + "Name: " + txtFirstName.Text + " " + txtSurname.Text + nl + "Mobile Number: " + txtMobileNumber.Text + nl +
                    "Email: " + txtEmail.Text + nl + "Department: " + comboBoxDepartment.Text + nl + "Salary: $" + salary.ToString() + nl + "Tax Payable: $" + taxPayable.ToString()));
            doc.Close();         
            MessageBox.Show("success");
        }
        else
        {
            saveFileDialog1.FileName = "Tax Report for " + txtFirstName.Text + " " + txtSurname.Text;
            saveFileDialog1.Filter = "PDF files (*.pdf)|*.pdf|All files (*.*)|*.*";
            saveFileDialog1.DefaultExt = "pdf";
            saveFileDialog1.ShowDialog();

            FileStream fs = new FileStream(saveFileDialog1.FileName, FileMode.Create, FileAccess.Write, FileShare.None);
            Document doc = new Document(PageSize.A4);
            PdfWriter writer = PdfWriter.GetInstance(doc, fs);
            doc.Open();

            doc.Add(new Paragraph("TAX REPORT" + nl + nl + "Employee ID: " + txtEmployeeID.Text.ToUpper() + nl + "Name: " + txtFirstName.Text + " " + txtSurname.Text + nl + "Mobile Number: " + txtMobileNumber.Text + nl +
                    "Department: " + comboBoxDepartment.Text + nl + "Salary: $" + salary.ToString() + nl + "Tax Payable: $" + taxPayable.ToString()));
            doc.Close();
        }



    }

希望这可以帮助您。


0
投票

让我们简单点。通常,您希望用户选择一个文件夹,而不是文件位置。因此,您应该使用FolderBrowserDialog而不是OpenFileDialog。当您获得文件夹时,请使用Path.Combine将文件名和文件夹名称合并为一个完整的路径。

© www.soinside.com 2019 - 2024. All rights reserved.