アプリ版:「スタンプのみでお礼する」機能のリリースについて

こんにちは!FolderBrowserDialogについてお教えいただけないでしょうか?
下記のコードを実行しました。

'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'FolderBrowserDialogクラスのインスタンスを作成
Dim fbd As New FolderBrowserDialog

'上部に表示する説明テキストを指定する
fbd.Description = "フォルダを指定してください。"
'ルートフォルダを指定する
'デフォルトでDesktop
fbd.RootFolder = Environment.SpecialFolder.Desktop
'最初に選択するフォルダを指定する
'RootFolder以下にあるフォルダである必要がある
fbd.SelectedPath = "C:\Windows"
'ユーザーが新しいフォルダを作成できるようにする
'デフォルトでTrue
fbd.ShowNewFolderButton = True

'ダイアログを表示する
If fbd.ShowDialog(Me) = DialogResult.OK Then
'選択されたフォルダを表示する
Console.WriteLine(fbd.SelectedPath)
End If
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
デスクトップを選択すると、「C:\Users\owner\Desktop」、
Cドライブを選択すると、「C:\」となります。

フォルダを選択した後に、「abc.txt」という固定ファイルを出力させようと思っています。とりあえずは、文字列連結をしてフルパスを作成します。

選択したフォルダパスに「"\abc.txt"」と文字列連結すると、「C:\Users\owner\Desktop\abc.txt」になります。
これは、OKです。

しかし、「Cドライブ直下では、「C:\\abc.txt」となってしまい、円マークが2つできてしまいます。
これだと正しいパスにファイルを出力することができないと思います。

これを解決するには、つまり「C:\abc.txt」にするには、どのようにコードを書いたらいいでしょうか?FolderBrowserDialogは使うものと前提でお願い致します!

A 回答 (2件)

コードは書きませんので自分で調べてください



フォルダ取得した時ルートフォルダ選択時だけは特殊な扱いで
末尾に\(バックスラッシュ)が付加されます
ですので 選択フォルダが3文字(ドライブの¥選択時)
もしくは選択フォルダの末尾文字が¥ だった時は
自前で¥を削除してから\を付けたファイル名を付加する等
工夫する必要があります(いずれの方法でも大した話じゃない)

荒業でいえば 作成後の文字列内の "\\" を "\" の置換するってのでもありかな

if分 Length関数 Replace関数 あたりで作成できます
    • good
    • 0
この回答へのお礼

replaceで置き換えてしまうのは手ですね。アイディアがわきました。ありがとうございます。

お礼日時:2014/04/20 10:44

パスの結合には,文字列を連結するのではなく,System.IO.PathクラスのCombineメソッドを利用します。



※参考URLには.NET 4のMSDNのURLを記述しています。最新版である.NET 4.5のMSDNは解説部分が訳されていないので。

参考URL:http://msdn.microsoft.com/ja-jp/library/fyy7a5kt …
    • good
    • 0
この回答へのお礼

combineメソッドは知りませんでした。これは私がやりたい事にに合致します。助かりました、ありがとうございます。

お礼日時:2014/04/20 10:45

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!