【问题标题】:add prompt to OpenFileDialog向 OpenFileDialog 添加提示
【发布时间】:2017-10-10 05:44:16
【问题描述】:

我正在编写一个 Windows 窗体应用程序,其中要求用户连续选择与任务对应的文件:每个任务都有一个特定文件。 由于它现在工作,在调用 OpenFileDialog 之前,提示用户选择与当前任务对应的文件,并在前一个窗口中指定任务名称。恐怕经过多次迭代后,用户不会记得他当前正在为其选择文件的任务。 显而易见的解决方案是在与 OpenFileDialog 相同的窗口上显示包含任务名称的提示。 由于 OpenFileDialog 是一个密封的类,它不能被继承。 有没有办法不编写我自己的文件选择工具?

【问题讨论】:

  • 查看我的编辑 - 希望对您有所帮助!

标签: c# winforms openfiledialog


【解决方案1】:

您可以将DialogTitle 设置为显示与哪些任务相关的信息。

为什么不提前显示MessageBox(像这样)?

MessageBox.Show("Please select file for TASK 00001", "Select File");

//Execution will continue on UserClick on OK on that MessageBox => User should have read 
that message and should know what task is related

OpenFileDialog dialog = new OpenFileDialog();
dialog.Title = "SELECT FILE FOR <YOUR TASKNAME GOES HERE>";
if(dialog.ShowDialog() == DialogResult.OK)
{
    string path = dialog.FileName;
    //Continue with your logic
}

更新:

看看documentation for OpenFileDialog。 有一个名为FileOKEvent 在选择文件时触发。 你可以实现某事。像这样:

private void Dialog_FileOk(object sender, CancelEventArgs e)
{
    DialogResult result = MessageBox.Show("ARE U SURE ?", "?", MessageBoxButtons.YesNoCancel);
    switch (result)
    {
        case DialogResult.Cancel:
            e.Cancel = true;
            break;
        case DialogResult.Yes:
            break;
        case DialogResult.No:
            e.Cancel = true;
            break;
    }            
}

不要忘记附加到该事件:

dialog.FileOk += Dialog_FileOk;

例如,您可以询问"Is this the correct file for TASK XYZ"。也可以使用e.Cancel = true; 中止选择,对话框保持打开状态。

【讨论】:

  • 感谢您的建议,但由于在实际选择文件的过程中看不到任务名称,因此我看不到与当前情况相比有明显改善。
  • 它会在对话框标题栏上可见吗?这还不够用吗?
  • 这也没有改善这种情况。我希望用户在文件选择过程正在进行而不是之后看到任务名称。
  • @user2102327 你想在哪里看到这个名字? - 记住 - 只要对话框打开,标题就会显示任务名称..
  • Felix D. 如果我可以从 OpenFileDialog 继承,我会在窗口顶部放置一个文本框,任务名称以蓝色或其他颜色显示。
猜你喜欢
  • 2011-10-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-10-12
  • 2018-08-10
  • 2011-01-25
  • 2013-01-28
相关资源
最近更新 更多