ひとつ前のエントリー [C++/CLI]フォルダ選択ダイアログ(コアルーチン) は、コアルーチンと書いてあるように、実際には、Windows Forms または、WPF から呼び出すことを想定して作られています。もちろんそのまま使ってもいいんですが、ちょっと使いにくいですからね。
ということで、まずは、簡単な Windows Forms からの呼出し。こちらはなんということはありません。 IWin32Window をパラメータに取るものを用意してやるだけです。これぞWrap!という程度にはペラペラです。
作り方はいたって簡単。
- C#(VBでもいいけどその場合は移植)のクラスライブラリを作成する
- System.Windows.Forms と、PickupFolderDialogCoreのクラスライブラリを参照する
- Class1.cs を、PickupFolderDialog.cs にリネームして下のコードを張り付ける。
こちらもわずか3ステップ。
using System;
using System.Windows.Forms;
namespace Wankuma.Forms
{
public class PickupFolderDialog
{
public String SelectedPath
{
get;
set;
}
public bool ShowDialog()
{
return ShowDialog( null );
}
public bool ShowDialog( IWin32Window window )
{
return ShowDialog( window.Handle );
}
private bool ShowDialog( IntPtr handle )
{
var dlg = new Wankuma.PickupFolderDialogCore();
dlg.SelectedPath = SelectedPath;
if( dlg.ShowDialog( handle ) )
{
SelectedPath = dlg.SelectedPath;
return true;
}
return false;
}
}
}
アプリケーションからの使い方は
var dlg = new Wankuma.Forms.PickupFolderDialog();
dlg.SelectedPath = フォルダを保持するオブジェクト;
if( dlg.ShowDialog( this ) )
{
フォルダを保持するオブジェクト = dlg.SelectedPath;
}
エラーが出るとしたら、参照し忘れか、this がウィンドウじゃないかのいずれか。後者の場合は、UIスレッド上で呼び出していることを確認した上で、引数なしで呼び出すように変えればOKです。
おーっと。。。プログラミングモデルはSTAですのでお忘れなく。。。