我在 OpenFileDialog 中设置的默认文件名是 answer_XXXXXX.csv。但它是这样显示的。默认名称“answer_XXXXXX.csv”未完整显示。
然后我单击文件名组合框。它显示准确。
我该如何解决?
我在 OpenFileDialog 中设置的默认文件名是 answer_XXXXXX.csv。但它是这样显示的。默认名称“answer_XXXXXX.csv”未完整显示。
然后我单击文件名组合框。它显示准确。
我该如何解决?
有一个小解决方法。在调用之前有下面的行ShowDialog()
。
openfiledialog.ShowHelp = true;
例子:
OpenFileDialog openfiledialog = new OpenFileDialog();
openfiledialog.ShowHelp = true;
openfiledialog.FileName = "answer_XXXXXXX.csv";
openfiledialog.ShowDialog();
更多:
这是另一种解决方法,您可以使用更复杂的 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();
}
我无法解释这个错误,但有一些解决方法,上面的就是其中之一。
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) {
...
}