2013-06-18 10 views
10

OpenFileDialog에서 기본 파일 이름을 answer_XXXXXX.csv로 설정했습니다. 그러나 이렇게 표시됩니다. 기본 이름 "answer_XXXXXX.csv"는 전체로 표시되지 않습니다. a busy catOpenFileDialog C#으로 기본 이름?

파일 이름 콤보 상자를 클릭하십시오. 그것은 정확히

a busy cat

내가 그것을 어떻게 해결할 수 표시?

미리 감사드립니다.

+0

다른 기본값에서도 이러한 현상이 발생합니까? 예를 들어'foobar_FOOBAR.csv' 파일이 어떻게 나타나나요? –

+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

이 대답이 받아 들여지면 Pls가 답변으로 표시됩니다. –

+1

매우 다른 레이아웃의 대화 상자를 보여줍니다 (Win 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) { 
    ... 
}