2013-06-18 85 views
10

我在OpenFileDialog中設置了默認的文件名是answer_XXXXXX.csv。但它是這樣顯示的。默認名稱「answer_XXXXXX.csv」未顯示完整。 a busy cat默認名稱與OpenFileDialog C#?

然後我點擊文件名組合框。它顯示正是

a busy cat

我怎樣才能解決呢?

在此先感謝。

+0

這是否也與其他默認值一起發生?例如,「foobar_FOOBAR.csv」如何顯示? – 2013-06-18 08:17:32

+3

我認爲這是系統的錯誤.. https://connect.microsoft.com/VisualStudio/feedback/details/525070/openfiledialog-show-part-of-file-name-in-win7# – Bolu

+0

這可能是該錯誤,但我沒有發現我的應用程序有任何問題。我試過名稱爲answer_XXXXXX123456.csv,它沒有給出任何問題。但是,如果你提供了更長的名字,那麼看到的文件名必須滾動到左側才能看到完整的文件名。 :) –

回答

7

這是一個小的解決方法。在調用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

+0

非常感謝。這就是我需要的 –

+1

如果答案被接受,請將其標記爲答案。 –

+1

它顯示了一個非常不同的佈局(贏10)的對話框。 – xmedeko

4

這裏是另一個解決辦法,你可以使用更復雜的Win32 API函數來訪問文件名組合框,做任何你想要但這個工作使用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(); 
} 

我無法解釋這個錯誤,但也有一些變通和上面的一個就是其中之一。

3

王中王的答案似乎是最好的解決辦法,我用基本相同的,但也許有點簡單(顯然我沒有這方面的聲譽,以贊成票或在自己的崗位直接評論):

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) { 
    ... 
}