2013-06-18 10 views
10

Ustawiam domyślną nazwę pliku to answer_XXXXXX.csv w OpenFileDialog. Ale wyświetla się w ten sposób. Domyślna nazwa "answer_XXXXXX.csv" nie jest wyświetlana jako pełna. a busy catDomyślna nazwa z OpenFileDialog C#?

Następnie klikam pole wyboru Nazwa pliku. To pokazuje dokładnie

a busy cat

Jak mogę to naprawić?

Z góry dziękuję.

+0

Czy dzieje się to z innymi wartościami domyślnymi? Na przykład, w jaki sposób pojawia się 'foobar_FOOBAR.csv'? –

+3

Myślę, że jest to błąd w systemie .. https://connect.microsoft.com/VisualStudio/feedback/details/525070/openfiledialog-show-part-of-file-name-in-win7# – Bolu

+0

Może to być błąd, ale nie znalazłem żadnego problemu z moją aplikacją. Próbowałem nazwę jako answer_XXXXXX123456.csv, nie dał żadnego problemu. Ale tak, jeśli podasz dłuższą nazwę, zobaczysz nazwę pliku, którą musisz przewinąć w lewą stronę, aby zobaczyć pełną nazwę pliku. :) –

Odpowiedz

7

Istnieje małe obejście tego problemu. Zrób poniższą linię przed wywołaniem ShowDialog().

openfiledialog.ShowHelp = true; 

Przykład:

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

Więcej:

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

+0

Dziękuję bardzo. To jest to, czego potrzebuję. –

+1

Jeśli ta odpowiedź zostanie zaakceptowana, Pls oznaczy ją jako odpowiedź. –

+1

Wyświetla okno dialogowe o bardzo różnym układzie (Win 10). – xmedeko

4

Oto kolejny obejść, można użyć bardziej złożonych funkcji Win32 API, aby uzyskać dostęp do combobox pliku i zrobić cokolwiek chcesz, ale to działa przy użyciu SendKeys, nie mam czasu, aby zagłębić się w funkcje Win32 API w tym czasie:

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(); 
} 

Nie mogę wyjaśnić tego błędu, ale jest kilka prac dookoła, a powyższy jest jednym z nich.

3

King King za odpowiedź wydaje się być najlepszym rozwiązaniem, użyłem w zasadzie takie same, ale może nieco prostsze (widocznie ja nie mam reputacji up-głosowania lub komentować bezpośrednio na swoim stanowisku):

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