OpenFileDialog会切断预先填充的文件名

时间:2014-07-02 07:45:20

标签: c# .net

我使用以下内容显示“打开文件”对话框:

OpenFileDialog fdlg = new OpenFileDialog();
fdlg.FileName = Properties.Settings.Default.Last_competition_file;
fdlg.Filter = "FS database files (*.fsdb)|*.fsdb|All files (*.*)|*.*";
fdlg.FilterIndex = 0;
if (fdlg.ShowDialog(this) == DialogResult.Cancel) return false;

(Properties.Settings.Default.Last_competition_file包含最后一个文件的完整路径)

问题:对于文件名“c:\ data \ nationals_2014.fsdb”,文件名字段仅显示“ionals_2014.fsdb”。

当点击文件名字段,并将光标移动到左侧时,文件名的其余部分为&路径重新出现。但我正在寻找一种方法,从一开始就可以看到整个文件名。

请注意,这不是长度问题。我也尝试分别设置路径和文件名(通过OpenFileDialog.InitialDirectory),但即便如此,只显示(现在更短)文件名的尾端。

如何让Open File对话框从头开始显示完整的预填充文件名?

4 个答案:

答案 0 :(得分:5)

警告:这是一个 Kludge ,而不是真正的答案。

  OpenFileDialog fdlg = new OpenFileDialog();
  fdlg.FileName = Properties.Settings.Default.Last_competition_file;
  fdlg.Filter = "FS database files (*.fsdb)|*.fsdb|All files (*.*)|*.*";
  fdlg.FilterIndex = 0;
  fdlg.ShowHelp = true;
  fdlg.HelpRequest +=  new System.EventHandler(HelpRequested); ;
  if (fdlg.ShowDialog(this) == DialogResult.Cancel) return false;

private void HelpRequested(object sender, EventArgs e)
{
    MessageBox.Show(".. is no Help", "There..");
}

Dialog的风格恢复了较旧的化身。

耸肩。一些变通方法让我对很多事情感到好奇。

答案 1 :(得分:0)

在Windows 10上,我通过打开文件对话框进行了如下设置:

var dialog = new OpenFileDialog{
  Filter = "excel files (*.xlsx)|*.xlsx",
  InitialDirectory = @"c:\temp",
  FileName = @"MyFileNameExceeds14Characters.xlsx"
};
dialog.ShowDialog();

解决方法:

  1. 设置AutoUpgradeEnabled = false以恢复为较旧的对话框样式。但是随后您就只能使用旧版UI。
  2. 确保文件名长度不超过14个字符。如果您没有直接控制文件名的权限,请通过Path.GetFileNameWithoutExtension()运行该文件,以尽可能减少文件名。
  3. 使用SaveFileDialog代替,这不会出现此问题。

答案 2 :(得分:-1)

在另一个帖子上找到了一个好的答案: c# Sending keyboard commands to another window / process 这样可以很好地修复文件名显示。

我仍然使用计时器,以确保对话框在活动屏幕上居中。显示对话框后:

Expression

答案 3 :(得分:-1)

插入代码:

SendKeys.Send("{HOME}");

行之前:

if (fdlg.ShowDialog(this) == DialogResult.Cancel) return false;

完成这项工作。