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

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

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

Re[4]: SaveFileDialogでの拡張子指定について


(過去ログ 159 を表示中)

[トピック内 6 記事 (1 - 6 表示)]  << 0 >>

■92152 / inTopicNo.1)  SaveFileDialogでの拡張子指定について
  
□投稿者/ ポケモンすけ (1回)-(2019/08/30(Fri) 10:08:50)

分類:[.NET 全般] 

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

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

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

ご存知のかた、ご教示ください。
引用返信 編集キー/
■92153 / inTopicNo.2)  Re[1]: SaveFileDialogでの拡張子指定について
□投稿者/ furu (5回)-(2019/08/30(Fri) 11:10:35)
No92152 (ポケモンすけ さん) に返信
やってみれば?

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

拡張子無しファイル2がどうしてこうなのかは聞かないでください。
やったらこうなったので。
引用返信 編集キー/
■92160 / inTopicNo.3)  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";
のようにすれば行けたようです!
ありがとうございました。
解決済み
引用返信 編集キー/
■92161 / inTopicNo.4)  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 のバージョンによって異なっていた記憶が…。
引用返信 編集キー/
■92162 / inTopicNo.5)  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" になるという
事象が発生しました。
引用返信 編集キー/
■92256 / inTopicNo.6)  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パターンで選択、保存までできたので
現状よしとしておきます
「ファイル名」については未解決ですが。。。
ありがとうございました。
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -