SaveFileDialog CLI / CLR / C#中的非标准文件扩展名

时间:2012-05-12 17:20:57

标签: c# c++-cli command-line-interface

我正在使用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”。

    < / LI>

1 个答案:

答案 0 :(得分: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

我希望这会有所帮助。