お世話になります。
指定したフォルダ配下のフォルダやファイルのみを選択できる「ファイル選択ダイアログボックス」を作成したいと思っています。
例えば、基準フォルダ→C:\Test
コモンダイアログボックスの「ファイルを開く」だと、他のフォルダにも移動できてしまいますよね?
なるべくなら既に用意されているコントロールを使いたいのですが、なさそうです。
DirListBox+FileListBoxで作成しようかなとも考えています。
何か良い方法があれば知恵を貸してください。
よろしくお願いします。
WebBrowserコントロールを使用して、
WebBrowser1.Navigate "C:\Test"
とか?
ボクがやるとしたらツリービューとリストビューで作ってしまいますね。
ツリーの Node を選択したらそれに対応するフォルダのファイルを
検索するだけですから。もともとコモンダイアログボックスの機能自体
自分で作ってもそれほど苦労しない程度の仕組みです。
VB.NETのソースですけれど、
ミチさんが言っている動作って
Dim kakuniforudaPath As String = "C:\Documents and Settings"
Dim kakunin As String
Do
With OpenFileDialog1
.FileName = "C:\Documents and Settings\ "
.Filter = "全てのファイル|*.*"
kakunin = .ShowDialog
If kakunin = DialogResult.OK Then
Dim mozi As String = .FileName
Dim mozi2 As String = LSet(mozi, kakuniforudaPath.Length)
If kakuniforudaPath = mozi2 Then
MessageBox.Show(mozi)
Exit Do
Else
MessageBox.Show("始めの指定フォルダからスタートしてください。")
End If
ElseIf kakunin = DialogResult.Cancel Then
MessageBox.Show("キャンセルされました。")
Exit Do
End If
End With
Loop
こんな感じですか?
でも、特攻隊長まるるうさんのほうがオススメだと思います。
ブリキさん、回答ありがとうございます。
うーん、違います・・。
特攻隊長まるるうさん、回答ありがとうございます。
やはりツリービューですかね…。
ツリービューはあまり慣れてないもんで、もっと簡単な方法を探してました(^^;
マグさん、回答ありがとうございます。
すみません、書くのを忘れていましたが私の環境はVB6です。
これだとファイルを選択してから、位置を判定することになりますよね?
ダイアログ上でも他のフォルダ(基準より上のフォルダ)を選択させたくないんです。
> うーん、違います・・。
http://madia.world.coocan.jp/cgi-bin/VBBBS/wwwlng.cgi?print+200406/04060065.txt
に手を入れれば可能では?
但し、Windows2000以降の場合ですが。
まぁ、方法はいろいろですから、好きにしたらいいと思います。
APIのSHBrowseFolderを使うという手もあります
ルートフォルダの指定はこの辺りが参考になると思います。
ttp://homepage2.nifty.com/DSS/VCPP/API/SHBrowseForFolder.htm
>SHBrowseFolder
SHBrowseForFolderでした。
ブリキさん
実現できるかもしれませんが、ファイルを開く等の操作をするわけでもないし、ただファイルが選択(ファイルパスの取得)できれば良いので、それだけのためにわざわざWebBrowserコントロールは使いたくないのが本音です。IEに依存しますし。
くまさん、回答ありがとうございます。
SHBrowseForFolderだと、フォルダしか選択できませんよね(^^;
ファイルの選択がしたいのです。
皆さんありがとうございます。
もう少し皆さんの意見を聞きたいと思います。
自分ならこうする!って意見募集します^^
> SHBrowseForFolderだと、フォルダしか選択できませんよね(^^;
> ファイルの選択がしたいのです。
出来ます。
BROWSEINFO構造体のulFlagsに BIF_BROWSEINCLUDEFILES (&H4000&)を指定すれば
一応選択したファイル名を拾うことが出来ます。
……とは言え、これじゃミチさんの用件は充たされませんよねf^_^;
やはり自作するのが一番良いんじゃないかと思います。
上手く作れば再利用できますし。
経過をみていると、回答があった方法に対して、全て後から条件を出して
拒絶してますね。先に条件を提示したら如何?
でないと、回答する気になれんでしょう?
お石灰さんに同意。
ちなみに私なら特攻隊長まるるうさんの意見に1票。
お石灰さん、じゃいあんさん
そうですね・・。
最初の質問で私のしたいことの意図がうまく伝わっていなかったようで、申し訳ありません。皆様。
もっと詳細に条件を書くべきでしたね。
・ファイルを開くコモンダイアログボックスみたいな動作
・指定したフォルダ配下のフォルダ・ファイルのみが選択できる
・指定したフォルダ配下以外は移動できない
以上で伝わるかと思っていました。
nanashiさん、
SHBrowseForFolderでファイル選択できるのは知りませんでした。
くまさん、すみませんでした。
私もやはり特攻隊長まるるうさんの意見の、ツリービューを使う方法が一番良いかなと思います。
これから作るとします。
みなさん、ありがとうございました。
ツイート | ![]() |