作成日: 2017/03/06, 更新日: 2017/03/06
FolderBrowserDialog
- 残念なことに WPF 向けに フォルダを開くダイアログは用意されていません。 ここでは、WinForms で使われる System.Windows.Forms.FolderBrowserDialog を利用して表示しています。
- FolderBrowserDialog は、ユーザーにフォルダを指定してもらうためのダイアログです。 とりあえずどういう風に動くのか見てみましょう。 以下サンプルです。「FolderBrowserDialogWindow1」という画面で作成していますが、「MainWindow」に書いても構いません。 あらかじめ FolderBrowserDialog を利用するために、参照設定の追加から「System.Windows.Forms.dll」を追加しています。

スポンサーリンク
<Window x:Class="FolderBrowserDialogWindow1" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:local="clr-namespace:w04_NormalControls" mc:Ignorable="d" Title="FolderBrowserDialogWindow1" Height="300" Width="300"> <StackPanel> <Button Content="フォルダを開く" Click="Button_Click" /> <TextBlock Name="textblock1" /> </StackPanel> </Window>
' 参照設定の追加で「System.Windows.Forms.dll」を参照追加しています。 Imports System.Windows.Forms Public Class FolderBrowserDialogWindow1 Private Sub Button_Click(sender As Object, e As RoutedEventArgs) ' WPF の FolderBrowserDialog は存在しないので、WinForms の FolderBrowserDialog を使う ' FolderBrowserDialog は System.Windows.Forms を Import により記載省略できるが、 ' DialogResult は、System.Windows.Forms を省略して記述すると、Window.DialogResult と衝突してしまうし、こちらが優先されてしまう ' FolderBrowserDialog に対応する System.Windows.Forms.DialogResult と名前空間付きで記載する必要ありorz Dim a = DialogResult Using dlg = New FolderBrowserDialog If dlg.ShowDialog() = System.Windows.Forms.DialogResult.OK Then Me.textblock1.Text = dlg.SelectedPath Else MessageBox.Show("キャンセルしました") End If End Using End Sub End Class
スポンサーリンク
<Window x:Class="FolderBrowserDialogWindow2" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:local="clr-namespace:w04_NormalControls" mc:Ignorable="d" Title="FolderBrowserDialogWindow2" Height="300" Width="300"> <StackPanel> <Button Content="フォルダを開く" Click="Button_Click" /> <TextBlock Name="textblock1" /> </StackPanel> </Window>
Public Class FolderBrowserDialogWindow2 Private Sub Button_Click(sender As Object, e As RoutedEventArgs) Using dlg = New System.Windows.Forms.FolderBrowserDialog dlg.Description = "フォルダーを選択してください" dlg.ShowNewFolderButton = False dlg.RootFolder = Environment.SpecialFolder.MyComputer If dlg.ShowDialog() = System.Windows.Forms.DialogResult.OK Then Me.textblock1.Text = dlg.SelectedPath Else MessageBox.Show("キャンセルしました") End If End Using End Sub End Class