How to code for cancel button in OpenFileDialog box

14,254

Solution 1

Why not:

The else statement avoids duplicated logic and you return an empty string, which the calling method can check

if (ofd.ShowDialog() == DialogResult.OK)
{
    filename_noext = System.IO.Path.GetFileName(ofd.FileName);
    path = Path.GetFullPath(ofd.FileName);
    img_path.Text = filename_noext;
    // MessageBox.Show(filename_noext, "Filename");
    // MessageBox.Show(full_path, "path");
    // move file from location to debug
    string replacepath = @"E:\Debug";
    string fileName = System.IO.Path.GetFileName(path);
    string newpath = System.IO.Path.Combine(replacepath, fileName);
    if (!System.IO.File.Exists(filename_noext))
        System.IO.File.Copy(path, newpath);

}
else
{
    return String.Empty;
}

Solution 2

if (ofd.ShowDialog() != DialogResult.OK)
    return "";

It is not working because you should return string ! You can return null if you want and check for null too !

And in your method:

private void button4_Click(object sender, EventArgs e)
{
    if(image_print() == "")
    {
       return;
       //You can write a message here to tell the user something if you want.
    }

    string s = image_print() + Print_image();
    PrintFactory.sendTextToLPT1(s); / sending to serial port
}
Share:
14,254
Stacy Kebler
Author by

Stacy Kebler

Updated on July 23, 2022

Comments

  • Stacy Kebler
    Stacy Kebler almost 2 years

    Whenever I am canceling the OpenFileDialog box. It's giving an error path is empty. My OpenFileDialog box

    Is there any way I can code for the cancel button and close button of OpenFileDialog

    My codes:

           private void button4_Click(object sender, EventArgs e)
            {
                string s = image_print() + Print_image();
                PrintFactory.sendTextToLPT1(s); / sending to serial port
            }
    
            private string image_print()
            {
                OpenFileDialog ofd = new OpenFileDialog();
                string path = "";
                string full_path = "";
                string filename_noext = "";
                ofd.InitialDirectory = @"C:\ZTOOLS\FONTS";
                ofd.Filter = "GRF files (*.grf)|*.grf";
                ofd.FilterIndex = 2;
                ofd.RestoreDirectory = true;
    
                if (ofd.ShowDialog() == DialogResult.OK)
                {
                    filename_noext = System.IO.Path.GetFileName(ofd.FileName);
                    path = Path.GetFullPath(ofd.FileName);
                    img_path.Text = filename_noext;
                    //MessageBox.Show(filename_noext, "Filename");
                    // MessageBox.Show(full_path, "path");
                    //move file from location to debug
                    string replacepath = @"E:\Debug";
                    string fileName = System.IO.Path.GetFileName(path);
                    string newpath = System.IO.Path.Combine(replacepath, fileName);
                    if (!System.IO.File.Exists(filename_noext))
                        System.IO.File.Copy(path, newpath);
                    
                }
    
                //tried using the below codes but not taking return statement. saying "An object of a type convertible to 'string' is required"
    
                if (ofd.ShowDialog() != DialogResult.OK)
                    return;//---->> here its not taking return
                  
                //when ever i press the cancel or close button it is going to below line. How to stop this
                StreamReader test2 = new StreamReader(img_path.Text);
                string s = test2.ReadToEnd();
                return s;
            }        
    
            private string Print_image()
            {
                //some codes that returns string value in s
                return s;
            }