如何为OpenFile对话框中的取消按钮编码

本文关键字:取消 按钮 编码 对话框 OpenFile | 更新日期: 2023-09-27 18:27:21

每当我取消OpenFile对话框时。它给出的错误路径为空。我的OpenFile对话框

有什么方法可以为OpenFileDialog 的取消按钮和关闭按钮编码吗

我的代码:

       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;
        }

如何为OpenFile对话框中的取消按钮编码

为什么不:

else语句避免了重复的逻辑,并且返回一个空字符串,调用方法可以检查

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;
}
if (ofd.ShowDialog() != DialogResult.OK)
    return "";

它不起作用,因为您应该返回字符串!如果你愿意,你可以返回null,也可以检查null!

在你的方法中:

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
}