I've made a tax calculator (all theoretical for practise) and it has a function whereby the user can press a button to export a basic PDF tax report. There are slightly different requirements to the tax report depending on whether or not it is an employee or a contractor. Contractors are denoted by having a EmployeeID start with a "C". So far all good.
Now I have a requirement for only contractors that the contractor PDF is saved with a specific name "ContractorTax". Is there a way to have a safe file dialog that only lets users select a location while having a locked file name (and I guess file extension).
This is the relevant code I have so far:
//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();
}
}
I found this question asked before but the answer was only relevant for Java and I'm using visual studio 2017 and coding in C#.