Имя по умолчанию с OpenFileDialog С#?

Я установил имя файла по умолчанию answer_XXXXXX.csv в OpenFileDialog. Но это выглядит так. Имя по умолчанию "answer_XXXXXX.csv" не отображается полностью.

Затем я нажимаю на поле со списком Имя файла. Он отображается точно.

Как я могу это исправить?

Ответ 1

Для этого есть небольшой обходной путь. Перед звонком ShowDialog() прочитайте строку ниже.

openfiledialog.ShowHelp = true;

Пример:

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

Подробнее:

.NET 4.5 WPF RibbonWindow не работает в VS2012

Ответ 2

Вот еще одна работа, вы можете использовать более сложные функции Wini-api для доступа к выпадающему имени файла и делать все, что хотите, но в этой работе используется SendKeys, у меня нет времени для поиска функций API Win32 в это время:

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