CustomScript

ページ

2014年11月25日火曜日

WPF勉強(4) フォルダ選択ダイアログの作成

  • .Net4.5
簡単に実装するなら FolderBrowserDialog を使えばよいのですが、なんかボタンが小さくてヤダ、WPFなのにFormのコントロールを呼び出しているのがヤダ、というわけで別の方法での実装します。

参照に追加するのは Micorosoft.WindowsAPICodePack と Microsoft.WindowsAPICodePack.Shell です。追加するにはNuGetで「Windows API Code Pack - Shell」をインストールしてください(Coreもインストールされます)。

// Button1 Click Event
private async void Button1_Click(object sender, RoutedEventArgs e)
{
    this.Button1.IsEnabled = false;

    try
    {
        for (int i = 0; i < 10; i++)
        {
            this.TextBox1.AppendText(i + "\n");
#if true
            // 非同期になるし、例外キャッチできる
            await Task.Run(async () => HeavyProcess(i));
            // コンパイラ警告が気になる場合は適当なawaitを追加
            //await Task.Run(async () => {HeavyProcess(i); await Task.Yield();});
#else
            // 非同期になるが、例外キャッチできない
            await Task.Run(() => HeavyProcess(i));
#endif
        }
    }
    catch (Exception ex)
    {
        this.TextBox1.AppendText(ex.Message);
    }

    this.Button1.IsEnabled = true;
}

// Heavy Process
void HeavyProcess(int count)
{
    System.Threading.Thread.Sleep(1000);
    if (count >= 5) throw new ApplicationException("例外発生!!");
}

参考URL
http://stackoverflow.com/questions/4007882/select-folder-dialog-wpf
http://arikalog.hateblo.jp/entry/2013/12/20/211641
 

0 件のコメント:

コメントを投稿