OpenFileDialog C#的默认名称?

我在OpenFileDialog中设置了默认文件名是answer_XXXXXX.csv。 但它显示如下。 默认名称“answer_XXXXXX.csv”未显示为已满。 一只忙碌的猫

然后我点击文件名combobox。 它准确显示

一只忙碌的猫

我该如何解决?

提前致谢。

这有一个小的解决方法。 在调用ShowDialog()之前有下面一行。

  openfiledialog.ShowHelp = true; 

例:

 OpenFileDialog openfiledialog = new OpenFileDialog(); openfiledialog.ShowHelp = true; openfiledialog.FileName = "answer_XXXXXXX.csv"; openfiledialog.ShowDialog(); 

更多:

http://connect.microsoft.com/VisualStudio/feedback/details/525070/openfiledialog-show-part-of-file-name-in-win7

这是另一种解决方法,您可以使用更复杂的Win32 api函数来访问文件名combobox并执行您想要的任何操作,但这项工作使用SendKeys ,此时我没有时间深入了解Win32 API函数:

 public Form1() { InitializeComponent(); t.Interval = 100; t.Tick += (s, e) => { SendKeys.Send("{HOME}+{END}"); t.Stop(); }; } Timer t = new Timer(); private void button1_Click(object sender, EventArgs e) { OpenFileDialog open = new OpenFileDialog(); open.FileName = "I love .NET so much"; t.Start(); open.ShowDialog(); } 

我无法解释这个错误,但有一些工作,上面的一个是其中之一。

King King的答案似乎是最好的解决方案,我使用的基本相同,但也许有点简单(显然我没有得到直接投票或直接评论他的post的声誉):

 OpenFileDialog oFileD = new OpenFileDialog(); oFileD.InitialDirectory = initialDir; oFileD.FileName = fileName; if (oFileD.FileName != "") { Timer t = new Timer(); t.Interval = 100; t.Tick += (s, e) => { SendKeys.Send("{HOME}+{END}"); t.Stop(); }; t.Start(); } if (oFileD.ShowDialog() == DialogResult.OK) { ... }