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

わんくま同盟

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

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

ツリー一括表示

SaveFileDialogでの拡張子指定について /ポケモンすけ (19/08/30(Fri) 10:08) #92152
Re[1]: SaveFileDialogでの拡張子指定について /furu (19/08/30(Fri) 11:10) #92153
  └ Re[2]: SaveFileDialogでの拡張子指定について /ポケモンすけ (19/08/30(Fri) 11:52) #92160 解決済み
    ├ Re[3]: SaveFileDialogでの拡張子指定について /魔界の仮面弁士 (19/08/30(Fri) 12:17) #92161
    └ Re[3]: SaveFileDialogでの拡張子指定について /魔界の仮面弁士 (19/08/30(Fri) 12:26) #92162
      └ Re[4]: SaveFileDialogでの拡張子指定について /ポケモンすけ (19/09/05(Thu) 12:59) #92256


親記事 / ▼[ 92153 ]
■92152 / 親階層)  SaveFileDialogでの拡張子指定について
□投稿者/ ポケモンすけ (1回)-(2019/08/30(Fri) 10:08:50)

分類:[.NET 全般] 

SaveFileDialogで拡張子を指定する際には

SaveFileDialog sfd = new SaveFileDialog();
sfd.Filter = //"HTMLファイル(*.html;*.htm)|*.html;*.htm|すべてのファイル(*.*)|*.*";

などとするかと思いますが、拡張子なしを指定することは可能なのでしょうか。
(ダイアログの「ファイルの種類」に拡張子なしと[*.txt]の2択にするとか)

ご存知のかた、ご教示ください。
[ □ Tree ] 返信 編集キー/

▲[ 92152 ] / ▼[ 92160 ]
■92153 / 1階層)  Re[1]: SaveFileDialogでの拡張子指定について
□投稿者/ furu (5回)-(2019/08/30(Fri) 11:10:35)
No92152 (ポケモンすけ さん) に返信
やってみれば?

//C#
sfd.Filter = "拡張子無しファイル1(*.)|*.|拡張子無しファイル2|*|テキストファイル(*.txt)|*.txt";

拡張子無しファイル2がどうしてこうなのかは聞かないでください。
やったらこうなったので。
[ 親 92152 / □ Tree ] 返信 編集キー/

▲[ 92153 ] / ▼[ 92161 ] ▼[ 92162 ]
■92160 / 2階層)  Re[2]: SaveFileDialogでの拡張子指定について
□投稿者/ ポケモンすけ (3回)-(2019/08/30(Fri) 11:52:44)
2019/08/30(Fri) 12:13:14 編集(投稿者)
2019/08/30(Fri) 12:13:12 編集(投稿者)

No92153 (furu さん) に返信

ありがとうございます。やってみました。
「ファイルの種類」には3パターン表示されますが、
テキストファイル選択後に拡張子無しファイル1、拡張子無しファイル2を選択しても
「ファイル名」の欄が更新されず「新しいファイル.txt」のままでした。。。
が、
dlg.Filter = "拡張子なし|*..|TEXT|*.txt";
のようにすれば行けたようです!
ありがとうございました。
解決済み
[ 親 92152 / □ Tree ] 返信 編集キー/

▲[ 92160 ] / 返信無し
■92161 / 3階層)  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 のバージョンによって異なっていた記憶が…。
[ 親 92152 / □ Tree ] 返信 編集キー/

▲[ 92160 ] / ▼[ 92256 ]
■92162 / 3階層)  Re[3]: SaveFileDialogでの拡張子指定について
□投稿者/ 魔界の仮面弁士 (2336回)-(2019/08/30(Fri) 12:26:15)
No92160 (ポケモンすけ さん) に返信
> dlg.Filter = "拡張子なし|*..|TEXT|*.txt";
> のようにすれば行けたようです!

実行環境に依存するのかな…?
当方環境では、期待動作していないように見えます。


No92161 の 4 ファイルのあるフォルダを、その条件で開いてみたら、
ListView の表示は
 FilterIndex == 1 (*..) の場合は、どれも表示されない
 FilterIndex == 2 (*.txt) の場合は、2 ファイルのみ … test1、test3
となって、肝心の test2 が表示されませんでした。


また、FilterIndex == 1 が選択された状態で、
ファイル名欄 に、"abc.xyz" という存在しないファイル名を書いた状態で
FilterIndex == 2 に切り替えてみたところ、"abc.xyz" が "abc.xyz.txt" となり、
さらに、FilterIndex == 1 にすると、"abc.xyz.txt" が "abc.xyz.." になり、
再度、FilterIndex == 2 にすると、"abc.xyz.." が "abc.xyz...txt" になるという
事象が発生しました。
[ 親 92152 / □ Tree ] 返信 編集キー/

▲[ 92162 ] / 返信無し
■92256 / 4階層)  Re[4]: SaveFileDialogでの拡張子指定について
□投稿者/ ポケモンすけ (4回)-(2019/09/05(Thu) 12:59:12)
No92162 (魔界の仮面弁士 さん) に返信
> ■No92160 (ポケモンすけ さん) に返信
>>dlg.Filter = "拡張子なし|*..|TEXT|*.txt";
>>のようにすれば行けたようです!
>
> 実行環境に依存するのかな…?
> 当方環境では、期待動作していないように見えます。
>
>
> No92161 の 4 ファイルのあるフォルダを、その条件で開いてみたら、
> ListView の表示は
>  FilterIndex == 1 (*..) の場合は、どれも表示されない
>  FilterIndex == 2 (*.txt) の場合は、2 ファイルのみ … test1、test3
> となって、肝心の test2 が表示されませんでした。
>
>
> また、FilterIndex == 1 が選択された状態で、
> ファイル名欄 に、"abc.xyz" という存在しないファイル名を書いた状態で
> FilterIndex == 2 に切り替えてみたところ、"abc.xyz" が "abc.xyz.txt" となり、
> さらに、FilterIndex == 1 にすると、"abc.xyz.txt" が "abc.xyz.." になり、
> 再度、FilterIndex == 2 にすると、"abc.xyz.." が "abc.xyz...txt" になるという
> 事象が発生しました。

魔界の仮面弁士様

申し訳ありません。
ご指摘のとおり、「ファイル名」の欄については更新されないままでした。
とりあえず拡張子なし、拡張子ありの2パターンで選択、保存までできたので
現状よしとしておきます
「ファイル名」については未解決ですが。。。
ありがとうございました。
[ 親 92152 / □ Tree ] 返信 編集キー/


管理者用

- Child Tree -