• 締切済み

VisualBasic2010のコンボボックス

VisualBasic2010のコンボボックスに関して質問です。 With ComboBox1   .Items.add("項目1")   .Items.add("項目2") End With のように、自身で項目を追加するのではなく、 ユーザのフォルダ配置情報を取得してコンボボックスに表示させるには、 どのようにすればよろしいでしょうか。 イメージとしては、WindowsXPで画像等を保存する場合にでる保存ダイアログ。 あれのコンボボックスのような感じです。

みんなの回答

  • cotae_bb
  • ベストアンサー率53% (51/95)
回答No.3

こんにちはNo.1で回答したものです。 とりあえずLoadイベントとSelectedChangedイベントで処理を書いてみました。 Public Class Form1   Private CurrentDirectory As IO.DirectoryInfo   Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load     '/ 対象のディレクトリの情報を取得     Dim directory_info As New IO.DirectoryInfo("C:\")     '/ コンボボックスのアイテムをクリア     ComboBox1.Items().Clear()     '/ 上へ戻るための     ComboBox1.Items().Add("../")     '/ ディレクトリ内の全サブディレクトリを取得して     '/ ComboBox1のアイテムに追加     For Each di As IO.DirectoryInfo In directory_info.GetDirectories()       ComboBox1.Items().Add(di.Name())     Next di     '/ ディレクトリ内の全ファイルを取得して     '/ ComboBox1のアイテムに追加     For Each fi As IO.FileInfo In directory_info.GetFiles()       ComboBox1.Items().Add(fi.Name())     Next fi     '/ 現在のディレクトリを保存     CurrentDirectory = directory_info   End Sub   Private Sub ComboBox1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ComboBox1.SelectedIndexChanged     '/ 選択されたアイテムを取得して現在のディレクトリと合わせてパスを作成     Dim path As String = CurrentDirectory.FullName() & "\" & ComboBox1.SelectedItem().ToString()     '/ 選択されたものがファイルだったら     '/ なにもしない     If IO.File.Exists(path) Then       Return     End If     '/ 対象のディレクトリの情報を取得     Dim directory_info As New IO.DirectoryInfo(path)     '/ コンボボックスのアイテムをクリア     ComboBox1.Items().Clear()     '/ 上へ戻るための     ComboBox1.Items().Add("../")     '/ ディレクトリ内の全サブディレクトリを取得して     '/ ComboBox1のアイテムに追加     For Each di As IO.DirectoryInfo In directory_info.GetDirectories()       ComboBox1.Items().Add(di.Name())     Next di     '/ ディレクトリ内の全ファイルを取得して     '/ ComboBox1のアイテムに追加     For Each fi As IO.FileInfo In directory_info.GetFiles()       ComboBox1.Items().Add(fi.Name())     Next fi     '/ 現在のディレクトリを保存     CurrentDirectory = directory_info   End Sub End Class 知識がないなら調べましょう。 とりあえず「Visual Basic 中学校」というサイトを一通り見てみることをお勧めします。 http://homepage1.nifty.com/rucio/main/main.htm

参考URL:
http://homepage1.nifty.com/rucio/main/main.htm
Hanykick
質問者

お礼

ご返答ありがとうございます 細かな説明までしていただいてすみません・・・ カレントでエラーが出たのですが、調べて解決できました。 大変有難うございました

すると、全ての回答が全文表示されます。
  • imogasi
  • ベストアンサー率27% (4737/17070)
回答No.2

テストの便宜上、フォームにコンボボックス1つボタン1つ(下記ではButton3)を設ける。 ボタンのクリックイベントを借りて Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click Dim files As String() = System.IO.Directory.GetFiles("C:\Documents and Settings\XXXXX\My Documents\", "*", System.IO.SearchOption.AllDirectories) ComboBox1.Items.AddRange(files) ComboBox1.Width = 400 End Sub 実行すると C:\Documents and Settings\XXXXX\My Documents\フォルダのファイル名が、コンボのアイテムに表示された。 こういうことを聞いているのかな。 ComboBox1.Width = 400は、フルパス名が文字数が多いので幅を広げたもの。

Hanykick
質問者

お礼

ご返信ありがとうございます。 イメージとしてはそのような感じです。 ただ、クリックイベントを介さず読み込ませたいです。 画像添付できれば質問の意図を掴みやすかったと思いますが、 規定の容量等でもUPできなかったので・・・ ご返信いただいたものを、適当なフォルダを指定して実行してみた結果、 枠の拡張はされましたがコンボボックスの項目に反映されませんでした。

すると、全ての回答が全文表示されます。
  • cotae_bb
  • ベストアンサー率53% (51/95)
回答No.1

ComboBoxのSelectionChangedイベントで選択されたフォルダ内を検索するようにすれば良いと思います。 Private Sub ComboBox1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ComboBox1.SelectedIndexChanged  Dim folder_name As String = ComboBox1.SelectedItem().ToString()  Dim folder As New IO.DirectoryInfo(folder_name)  ComboBox1.Items().Clear()  For Each fi As IO.DirectoryInfo In folder.GetDirectories()   ComboBox1.Items().Add(fi.Name())  Next fi End Sub イメージはこんな感じでしょうか? いろいろ処理が足りないので付け加えてください。 質問の意味を履き違えていたらスミマセン

Hanykick
質問者

お礼

ご返答ありがとうございます すみません知識不足で追加する処理が いまいち分かりません・・・

すると、全ての回答が全文表示されます。

関連するQ&A