LoginSignup
5
9

More than 5 years have passed since last update.

Visual Studio 2017 Visual C# による ActiveX コントロールの使い方

Last updated at Posted at 2018-02-05

はじめに

ActiveX コントロールは .NET Framework でも簡単に利用できます。ここでは Windows Forms デスクトップアプリケーションで自作 ActiveX コントロールを使う方法を紹介します。

ActiveX コントロールは自作しなくてもたくさんのものが知らないうちに市販アプリケーションなどといっしょにインストールされています。ただし、こういうものはプロテクトがかかっていたり、使い方がわからなかったりして、実際には利用できない場合が多いです。

ActiveX コントロールの Visual Studio 2017 への登録

ActiveX コントロールは Visual Studio 2017 に登録しないと使えません。そして、デフォルトでは何も登録されていないので独自に登録する必要があります。

まず、Windows Forms デスクトップアプリケーションのプロジェクトを作成します。

  • フォームデザイン画面で左側のツールボックスペインで右クリックしてコンテキストメニューを開きます。
  • 「タブの追加」メニューをクリックして新しいタブをツールボックスに追加します。タブの名称は任意ですが、ここでは- 「ActiveX コントロール」とします。
  • 「ActiveX コントロール」タブで右クリックしてコンテキストメニューを開き、「アイテムの選択」メニューを実行します。
  • ダイアログが開いたら「COM コンポーネント」タブを選択して、一覧から目的の ActiveX コントロールを探して OK ボタンをクリックします。
  • ツールボックスの「ActiveX コントロール」タブに、その ActiveX コントロール が追加されます。

ToolBoxAxControl.png

Fig.1 ツールボックスの 「ActiveX コントロール」タブの表示例

ActiveX コントロールの利用

ツールボックスに登録すれば、あとは他のコントロールと使い方はいっしょです。フォームに貼り付けてプロパティを設定して、必要なら ActiveX コントロールのメソッドを使用したり、イベントハンドラを実装したりして利用します。

Fig.1 でツールボックスに登録した ActiveX コントロールは Visual Studio 2017 Visual C++ による MFC ActiveX コントロールの開発 で作成したものです。Visual Studio のフォームデザイン画面に貼り付けると Fig.2 のような感じです。

DesignForm_AxControl.png

Fig.2 ActiveX コントロールを貼り付けたデザイン画面

このプログラムを実行したときの表示例が Fig.3 です。

Form_AxControl.png

Fig.3 ActiveX コントロールを貼り付けたプログラムの実行画面

このプログラムのコードは次のようになります。axMFCAxCtrl21 と axMFCAxCtrl31 は ActiveX コントロールの変数名で、プロパティエディタの Name プロパティの値です。

using System;
using System.Windows.Forms;

namespace TestMFCAxCtrlCs
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        /// <summary>
        /// フォームがロードしたとき
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void Form1_Load(object sender, EventArgs e)
        {
            axMFCAxCtrl21.Caption = "MFCAxCtrl2 ActiveX コントロール";
        }

        /// <summary>
        /// ボタンがクリックされたとき
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void button1_Click(object sender, EventArgs e)
        {
            axMFCAxCtrl31.FillInterior();
        }
    }
}

-

5
9
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
9