继续打开 OpenFileDialog 直到选择有效文件

2024-04-09

我有打开 OpenFileDialog 的代码,我正在检查文件的大小以确保它不超过特定限制。 但是,如果用户选择了一个大尺寸的文件,我需要警告他并引导他返回对话框以选择不同的文件或单击“取消”。

这是我尝试过的:

        OpenFileDialog dialog = new OpenFileDialog();
        dialog.Filter = "Jpeg files, PDF files, Word files|*.jpg;*.pdf;*.doc;*.docx";
        while (dialog.ShowDialog() != DialogResult.Cancel)
        {
                var size = new FileInfo(dialog.FileName).Length;
                if (size > 250000)
                {
                    MessageBox.Show("File size exceeded");
                    continue;
                }
        }

编辑: 我还尝试了以下代码,但每次调用 ShowDialog 时它都会打开对话框。因此,如果用户选择的文件大小是限制的 3 倍,则该对话框将出现 3 次。

  OpenFileDialog dialog = new OpenFileDialog();
        dialog.Filter = "Jpeg files, PDF files, Word files|*.jpg;*.pdf;*.doc;*.docx";
        dialog.FileOk += delegate(object s, CancelEventArgs ev)
        {
            var size = new FileInfo(dialog.FileName).Length;
            if (size > 250000)
            {
                XtraMessageBox.Show("File size");
                dialog.ShowDialog();
            }
        };
        if (dialog.ShowDialog() == DialogResult.OK)
        {
            XtraMessageBox.Show("File Selected");
        }

您已经完成了一半,FileOk 事件就是您想要使用的事件。您缺少的是将 e.Cancel 属性设置为 true。这样可以使对话框保持打开状态,并避免您必须一遍又一遍地显示它。像这样:

        OpenFileDialog dialog = new OpenFileDialog();
        dialog.Filter = "Jpeg files, PDF files, Word files|*.jpg;*.pdf;*.doc;*.docx";
        dialog.FileOk += delegate(object s, CancelEventArgs ev) {
            var size = new FileInfo(dialog.FileName).Length;
            if (size > 250000) {
                MessageBox.Show("Sorry, file is too large");
                ev.Cancel = true;             // <== here
            }
        };
        if (dialog.ShowDialog() == DialogResult.OK) {
            MessageBox.Show(dialog.FileName + " selected");
        }
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

继续打开 OpenFileDialog 直到选择有效文件 的相关文章

随机推荐