2016年06月15日

Visio アドインの自作フォームを Visio ウィンドウをオーナーとして表示する

アドインでフォームを表示する時に Visio のウィンドウをオーナーとして表示してみましょう。
オーナーを指定してフォームを表示すると、常にオーナーより手前に表示されるようになります。

※Visual Studio によるアドインの作り方は以下を参照してください。
http://visio.seesaa.net/article/437290221.html


  1. Visio ウィンドウのハンドルを取得することのできるクラスを作成します。

    internal class Win32Window : System.Windows.Forms.IWin32Window
    {
    public Win32Window(int windowHandle)
    {
    this.Handle = new IntPtr(windowHandle);
    }

    public IntPtr Handle { getprivate set; }
    }



  2. リボンにフォーム表示ボタンを用意します。
    20160615_01.png


  3. ボタンのイベントハンドラーにフォーム表示のコードを記述します。

    private void showButton_Click(object sender, RibbonControlEventArgs e)
    {
    // Visio ウィンドウ
    int windowHandle = Globals.ThisAddIn.Application.WindowHandle32;
    var window = new Win32Window(windowHandle);

    // Visio ウィンドウをオーナーとしてフォームを表示する。
    var form = new MyForm();
    form.Show(window);
    }

    private void showDialogButton_Click(object sender, RibbonControlEventArgs e)
    {
    // Visio ウィンドウ
    int windowHandle = Globals.ThisAddIn.Application.WindowHandle32;
    var window = new Win32Window(windowHandle);

    // Visio ウィンドウをオーナーとしてフォームを表示する。
    var form = new MyForm();
    form.ShowDialog(window);
    }




    1. それでは実行してみましょう。
      20160615_02.png

      [Show] ボタンをクリックするとモーダル、[ShowDialog]ボタンをクリックするとモードレスでフォームが表示されます。
      表示されたフォームは常に Visio のウィンドウの手前に表示されるのでアドインらしくなりましたね。

      ソースコードは以下で公開しています。
      https://github.com/visGeek/VisioAddIn_ShowFormSample
posted by visGeek at 04:25| Comment(0) | TrackBack(0) | アドイン開発 | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:

この記事へのトラックバックURL
http://blog.seesaa.jp/tb/439000030

この記事へのトラックバック