1

我正在使用 CLI/CLR 和非托管代码,但这个问题与 CLI/CLR 部分有关,我观察到与 c# 代码相同的行为。

我正在尝试使用不符合标准文件扩展名规则的旧文件名保存文件。文件扩展名是“-C2.txt”,不幸的是,当我使用 SaveFileDialog::Filter 方法时,文件名不包含“-C2”部分。SaveFileDialog 中是否有解决方法可以让我这样做?

SaveFileDialog^ cDlg = gcnew SaveFileDialog;
cDlg->Filter = "csv file (*.csv)|*.csv|-C2.txt file (*-C2.txt)|*-C2.txt|All Files (*.*)|*.*";

例子:

  1. 在 SaveFileDialog 框中,我选择了一个现有文件“File01.csv”,然后将其放置在 SaveFileDialog 框中的现有“文件名:”文本框中。

  2. listView 框仅显示那些适合过滤器的文件,例如仅显示 *-C2.txt 文件而不显示 *.txt 文件。

  3. 但是,我将“另存为类型:”组合框更改为“-C2.txt”,新文件名是“file01.txt”而不是“file01-C2.txt”。

4

1 回答 1

1

不,没有办法让对话框为您执行此操作。正如 Jeff Mercado 正确指出的那样“-ct.txt不是扩展,.txt部分是......”。

我可以为您提供的最佳解决方案是自己更改选定的文件路径,就像这样

string strFullPath = FileBrowser.Filename; // Has your "SomeFile.txt
string[] strTmpArr = strFullPath.Split('.');
strFullPath = String.Format("{0}-C2.txt", strTmpArr[0]);

请注意,这假设您没有“。” 文件路径中的任何其他位置。你不能使用Path.ChangeExtension()-C2.txt会做的.-C2.txt

我希望这有帮助。

于 2012-05-12T17:57:38.233 回答