C# と VB.NET の質問掲示板

わんくま同盟

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト


■92161 / )  Re[3]: SaveFileDialogでの拡張子指定について
□投稿者/ 魔界の仮面弁士 (2335回)-(2019/08/30(Fri) 12:17:24)
No92160 (ポケモンすけ さん) に返信
> 「ファイルの種類」には3パターン表示されますが、
> テキストファイル選択後に拡張子無しファイル1、拡張子無しファイル2を選択しても
> 「ファイル名」の欄が更新されず「新しいファイル.txt」のままでした。。。

test1.txt
test2
test3.TxT
test4.TxTokyoMetroPass

という 4 つのファイルが置いてあるフォルダを用意してみました。

そして、SaveFileDialog で開いてみたところ、ListView 部に表示される内容は
 FilterIndex == 1 (*.) の場合は、どれも表示されない
 FilterIndex == 2 (*) の場合は、4 ファイルすべてが表示される
 FilterIndex == 3 (*.txt) の場合は、2 ファイルのみ … test1、test3
という状態になりました。

一方、コマンドプロンプトから DIR コマンドで確認してみると、
 DIR "*." の場合は 1 ファイルのみ … test2 のみ
 DIR "*" の場合は 4 ファイルすべて
 DIR "*.txt" の場合は 3 ファイル … test1、test3、test4
という結果になりました。

# test4 のショートファイル名は "TEST4~1.TXT" だったので、
# FilterIndex == 3 なら test4 も表示されると思ってた…。



> 「ファイル名」の欄が更新されず「新しいファイル.txt」のままでした。。。

「ファイル名」欄はあまり気にしすぎない方が良いかと思いますよ。
ある程度の拡張子連動機能はありますが、単純な文字列加工処理が
補助的に行われている程度なのだと思いますし。


FilterIndex が何であっても、ファイル名欄に「*.*」と書いて Enter すれば
フィルタ条件に関係なくすべてのファイルが列挙されますので、
そもそも絶対的な物でもないですよね。

また、既存のファイルを選択した状態で、そのまま元ファイルをリネームした場合、
「ファイル名」欄はリネーム前の名前をそのまま保持していますが、
この状態でダイアログを閉じる際に、新旧どちらの名前が指定されたことに
なるのかという点が、Windows のバージョンによって異なっていた記憶が…。
返信 編集キー/


管理者用

- Child Tree -