フォルダダイアログの初期状態を変えるには?

解決


ドモン  2006-11-28 19:18:33  No: 134315

初めまして(^^;)
ドモンと言います。

どうしても自力ではわからなかったので、どなたかお力添えをお願いします。

下記にソースを載せておきましたが、Form上にあるbutton1を押すとフォルダの参照ダイアログを表示させるだけのものなのです。
Form上にあるtextbox1にパスが書き込まれているのですが、そのパスを初期選択するパスに設定したいのです。

「D:\Documents and Settings\All Users\デスクトップ」
というパスがあるとして、
「D:\Documents and Settings\All Users」
までは初期選択される事が確認されましたが、
「デスクトップ」が入るとうまくいきません。

説明がわかりにくくて申し訳ないですが、どなたか「デスクトップ」までいれてもうまくいく方法を教えてください。

----------------------------------------------------
Private Sub Button1_Click_1 _
(ByVal sender As System.Object, _
ByVal e As System.EventArgs) _
Handles Button1.Click

Dim pass As String
pass = TextBox1.Text 

Dim FolBrows As New FolderBrowserDialog

FolBrows.Description = "ファイルの選択"

FolBrows.RootFolder = System.Environment.SpecialFolder.MyComputer

FolBrows.SelectedPath = pass

FolBrows.ShowNewFolderButton = False

If FolBrows.ShowDialog() = DialogResult.OK Then
  TextBox1.Clear()
  TextBox1.Text = FolBrows.SelectedPath
End If

FolBrows.Dispose()
End Sub
----------------------------------------------------


ドモン  2006-11-28 19:48:42  No: 134316

環境を書き込み忘れていました。

VB.netです。


大吉末吉  2006-11-28 20:08:27  No: 134317

ドモン  さん    こんにちは。

> 「デスクトップ」が入るとうまくいきません。

ヘルプ(MSDNライブラリ)を読むと無理っぽい気が・・・

ヘルプの「FolderBrowserDialog.SelectedPath プロパティ 」によると、
http://msdn.microsoft.com/library/ja/default.asp?url=/library/ja/cpref/html/frlrfsystemwindowsformsfolderbrowserdialogclassselectedpathtopic.asp
---------------------------------------------------
SelectedPath は RootFolder のサブフォルダへの絶対パスである必要があります 
(より正確に表現すると、RootFolder が表すシェル名前空間のサブフォルダへの絶対パスである必要があります)。
---------------------------------------------------
だそうです。
で、
> 「D:\Documents and Settings\All Users\デスクトップ」
って、『デスクトップ』を表す、特殊フォルダですよね?

つまり、

> FolBrows.RootFolder = System.Environment.SpecialFolder.MyComputer

で指定した特殊フォルダ『マイコンピュータ』より、上位のフォルダってことですよね・・・


ドモン  2006-11-28 20:26:23  No: 134318

大吉末吉 さん
本当にわかりやすい説明をありがとうございます!!
助かりました(^-^)

> ---------------------------------------------------
> SelectedPath は RootFolder のサブフォルダへの絶対パスである必要があります 
> (より正確に表現すると、RootFolder が表すシェル名前空間のサブフォルダへの絶対パスである必要があります)。
> ---------------------------------------------------

なるほど、、、。
とりあえず出来ないことがわかっただけでも収穫がありました!
本当にありがとうございます!


もげ  2006-11-28 21:01:41  No: 134319

RootFolderをマイコンピュータにしてデスクトップを指定してみましたが、
再現しませんでした。指定できます。
(Win2000SP4+VB.NET2003SP1)。
単に、"C:\Documents and Setting〜以下略"の生フォルダになるので
ちょっと気持ち悪いですが(^^;。

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    Me.FolderBrowserDialog1.RootFolder = Environment.SpecialFolder.MyComputer
    Me.FolderBrowserDialog1.SelectedPath = "C:\Documents and Settings\All Users\デスクトップ"
    Me.FolderBrowserDialog1.ShowDialog()
    MsgBox(Me.FolderBrowserDialog1.SelectedPath.ToString)
    Me.Close()
End Sub


大吉末吉  2006-11-28 21:30:56  No: 134320

もげ さん  こんにちは。

私は、WindowsXP(SP2)+VB2005で試しました。

この環境では、再現しました。

と言うことは、環境依存と言うことですか・・・


もげ  2006-11-29 01:05:29  No: 134321

>>大吉末吉殿、ドモン殿

質問者殿納得&解決済みのところ恐縮です。
WinXPProSP1+VB.NET2003SP1環境で確認したところ、
再現しました(指定できません。)のでご参考までに。

>と言うことは、環境依存と言うことですか・・・

ということですね。


ドモン  2006-11-29 18:35:59  No: 134322

もげさん、大吉末吉さん

色々とお手数をおかけしてしまいまして、申し訳ないです。

環境依存ということでしたか。。。
今の私の環境は、WinXPProSP1+VB.NET2003SP1ですので、
指定は出来ないということになってしまいますね(^-^;)

ありがとうございました!


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加