12

我在 OpenFileDialog 中设置的默认文件名是 answer_XXXXXX.csv。但它是这样显示的。默认名称“answer_XXXXXX.csv”未完整显示。

然后我单击文件名组合框。它显示准确。

我该如何解决?

4

3 回答 3

10

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

openfiledialog.ShowHelp = true;

例子:

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

更多:

.NET 4.5 WPF RibbonWindow 在 VS2012 中损坏

于 2013-06-18T08:37:29.520 回答
5

这是另一种解决方法,您可以使用更复杂的 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();
}

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

于 2013-06-18T08:43:57.377 回答
4

King King 的回答似乎是最好的解决方案,我使用的基本相同,但可能更简单一些(显然我没有直接在他的帖子上投票或评论的声誉):

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) {
    ...
}
于 2017-01-24T09:33:32.433 回答