How can I prompt a user to choose a location to save a file?
Asked Answered
C

3

10

In my main Form I have a method called SavePDFDocument():

private void SavePDFDocument()
{
    PDFWrapper pdfWrapper = new PDFWrapper();
    pdfWrapper.CreatePDF(horizontalPictureScroller1.GetPictures(), "pdfDocument.pdf");
}

As you can see, right now I'm manually typing in a name for the file. I'd like to ask the user to choose where to save it and what name to give it.

This is the CreatePDF() method I'm using above:

public void CreatePDF(List<System.Drawing.Image> images, string filename)
{
    if (images.Count >= 1)
    {
        Document document = new Document(PageSize.LETTER);
        try
        {

            // step 2:
            // we create a writer that listens to the document
            // and directs a PDF-stream to a file

            PdfWriter.GetInstance(document, new FileStream(filename, FileMode.Create));

            // step 3: we open the document
            document.Open();

            foreach (var image in images)
            {
                iTextSharp.text.Image pic = iTextSharp.text.Image.GetInstance(image, System.Drawing.Imaging.ImageFormat.Jpeg);

                if (pic.Height > pic.Width)
                {
                    //Maximum height is 800 pixels.
                    float percentage = 0.0f;
                    percentage = 700 / pic.Height;
                    pic.ScalePercent(percentage * 100);
                }
                else
                {
                    //Maximum width is 600 pixels.
                    float percentage = 0.0f;
                    percentage = 540 / pic.Width;
                    pic.ScalePercent(percentage * 100);
                }

                pic.Border = iTextSharp.text.Rectangle.BOX;
                pic.BorderColor = iTextSharp.text.BaseColor.BLACK;
                pic.BorderWidth = 3f;
                document.Add(pic);
                document.NewPage();
            }
        }
        catch (DocumentException de)
        {
            Console.Error.WriteLine(de.Message);
        }
        catch (IOException ioe)
        {
            Console.Error.WriteLine(ioe.Message);
        }

        // step 5: we close the document
        document.Close();
    }
}

Any suggestions?

Clyster answered 3/12, 2010 at 0:42 Comment(0)
T
20

Did you take a look at SaveFileDialog?

private void button1_Click(object sender, System.EventArgs e)
{
     Stream myStream ;
     SaveFileDialog saveFileDialog1 = new SaveFileDialog();

     saveFileDialog1.Filter = "txt files (*.txt)|*.txt|All files (*.*)|*.*"  ;
     saveFileDialog1.FilterIndex = 2 ;
     saveFileDialog1.RestoreDirectory = true ;

     if(saveFileDialog1.ShowDialog() == DialogResult.OK)
     {
         if((myStream = saveFileDialog1.OpenFile()) != null)
         {
             // Code to write the stream goes here.
             myStream.Close();
         }
     }
}
Tantalizing answered 3/12, 2010 at 0:45 Comment(0)
T
4

I believe this page describes what you are looking for:

// Configure save file dialog box
Microsoft.Win32.SaveFileDialog dlg = new Microsoft.Win32.SaveFileDialog();
dlg.FileName = "Document"; // Default file name
dlg.DefaultExt = ".text"; // Default file extension
dlg.Filter = "Text documents (.txt)|*.txt"; // Filter files by extension

// Show save file dialog box
Nullable<bool> result = dlg.ShowDialog();

// Process save file dialog box results
if (result == true)
{
    // Save document
    string filename = dlg.FileName;
}
Triable answered 3/12, 2010 at 0:44 Comment(4)
I think the higher-level 'System.Windows.Forms.SaveFileDialog' is more appropriate in this case. Does anyone happen to know what the difference is though? It's not obvious after looking at the MSDN.Tantalizing
Thanks, the question is more difficult though. How can I integrate this SaveFieldDialog functionality with my code above? Notice I'm using New FileStream(). Any suggestions?Clyster
@Serg look at the example code I posted in my answer; it is handling a Stream object.Tantalizing
@Nathan - I would be very interested to know the differences too.Triable
E
2

A useful link: How to: Save Files Using the SaveFileDialog Component

Extradition answered 3/12, 2010 at 0:49 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.