皆さん .NET 8 使っていますか? 使っていますよね? 知っています。皆さん使っています。
■ .NET 8 の WPF の新機能 OpenFolderDialog
.NET 8 で WPF で OpenFolderDialog が使えるそうです。
皆さん WPF で OpenFolderDialog 使いたかったですよね? 私は使いたかったです。何度自作したか......。
■ 試してみます。
試してみます。
<Window x:Class="WpfApp1.MainWindow" 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:WpfApp1" mc:Ignorable="d" Title="MainWindow" Height="450" Width="800"> <Grid> <Button Content="Button" Click="Button_Click"/> </Grid> </Window>
using System.Windows; namespace WpfApp1 { /// <summary> /// Interaction logic for MainWindow.xaml /// </summary> public partial class MainWindow : Window { public MainWindow() { InitializeComponent(); } private void Button_Click(object sender, RoutedEventArgs e) { Microsoft.Win32.OpenFolderDialog ofd = new Microsoft.Win32.OpenFolderDialog {InitialDirectory= @"C:\sample", FolderName = "cs12" }; MessageBox.Show(ofd.ShowDialog() == true ? ofd.FolderName : "キャンセルされました."); } } }
実行してみます。
でました!
■ 暗黒の儀式
かつてはこんな闇の技術もありましたが、完全に闇に飲みさせることができるようになりますね!
「フォルダーの参照」より「フォルダーの選択」の方が使いやすいですし!
using System.Windows; namespace WpfApp3 { /// <summary> /// MainWindow.xaml の相互作用ロジック /// </summary> public partial class MainWindow : Window { public MainWindow() { InitializeComponent(); } private void Button_Click(object sender, RoutedEventArgs e) { System.Windows.Forms.FolderBrowserDialog fbd = new System.Windows.Forms.FolderBrowserDialog { SelectedPath = @"C:\sample\cs12" }; MessageBox.Show(fbd.ShowDialog() == System.Windows.Forms.DialogResult.OK ? fbd.SelectedPath : "キャンセルされました."); } } }
WPF で Forms の dll 禁止のプロフジェクトに、このコードが書かれたソースコードが混入してします事件ともさらば!