とっちゃん's Blog

WindowsInstaller に WiX はいかがですか~

目次

Blog 利用状況

ニュース

とっちゃんって?

コミュニティ

@ITの記事

CodeZineの記事

WiX チュートリアル

Windows ユーザー エクスペリエンス ガイドライン

唯一の日本語書籍

記事カテゴリ

書庫

日記カテゴリ

インストーラ関連

旧館

フォルダ選択ダイアログを、Form から呼び出す

ひとつ前のエントリー [C++/CLI]フォルダ選択ダイアログ(コアルーチン) は、コアルーチンと書いてあるように、実際には、Windows Forms または、WPF から呼び出すことを想定して作られています。もちろんそのまま使ってもいいんですが、ちょっと使いにくいですからね。

ということで、まずは、簡単な Windows Forms からの呼出し。こちらはなんということはありません。 IWin32Window をパラメータに取るものを用意してやるだけです。これぞWrap!という程度にはペラペラです。

作り方はいたって簡単。

  1. C#(VBでもいいけどその場合は移植)のクラスライブラリを作成する
  2. System.Windows.Forms と、PickupFolderDialogCoreのクラスライブラリを参照する
  3. 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ですのでお忘れなく。。。

投稿日時 : 2013年4月26日 13:15

コメントを追加

# GaLxAXVgBCEF 2021/07/03 3:03 https://amzn.to/365xyVY

Please check out my web site too and let me know what

# re: ?????????????Form ?????? 2021/08/08 15:46 hydroxychloroquine safe

chloroquine tab https://chloroquineorigin.com/# hydrochoriquine

タイトル  
名前  
URL
コメント