.NET ROOM.NET ROOMトップへCOMRADE総合トップへ
「1:COM/.NETコントロールの作成方法」へ

コントロールのテスト

 ここまでで作成したコントロールをテストしてみましょう。
COMと.NETで作成したコントロールをフォーム上に貼り付けてテストを行ないます。
テストには、Visual Basic .NET 2003(以下VB.NET)を使用してみましょう。

 テスト用のフォームを作成する手順を説明します。
Visual Studio .NETのメニューから[ファイル]-[新規作成]-[プロジェクト]を選択すると、
「新しいプロジェクト」というダイアログが開きます。
そこで、「プロジェクトの種類」から「Visual Basicプロジェクト」を、「テンプレート」から
「Windowsアプリケーション」を選択し、任意のプロジェクト名を付けてプロジェクトを作成する場所を選びます。

  フォームが表示されるので、先ほど作成したCOMコントロールと.NETコントロールを貼り付けますが、
その前にコントロールをツールボックスに追加しなければなりません。

 追加の方法は以下のとおりです。

@メニューから[表示]-[ツールボックス]を選択してツールボックスを表示する。
ツールボックス上で右クリックするとショートカットウィンドウが現われるので、[タブの追加]という
項目を選んでタブを追加する(今回は「マイユーザーコントロール」というタブを作成)。

A作成したタブを選択し、空いているところで右クリックするとショートカットメニューが現われるので、
[アイテムの追加と削除]という項目を選び、「ツールボックスのカスタマイズ」という
ダイアログを表示する(
図7)。


図7:ツールボックスのカスタマイズ



BまずCOMコントロールをツールボックスに追加するため、「COMコンポーネント」というタブを選択して
[参照]ボタンを押し、先ほど作成したCOMコントロール(DigitText.ocx)を選択する。

C同様に.NETコントロールをツールボックスに追加するため、「.NET Frameworkコンポーネント」という
タブを選択して[参照]ボタンを押し、先ほど作成した.NETコントロール(DigitText.dll)を選択する。



 これでツールボックスに先ほど作成したCOMコントロールと.NETコントロールが追加されました(図8)。
フォームにこれらのコントロールをドラッグして貼り付れば、Key入力のテストのできるフォームができます。

図8:カスタムコントロールの追加されたツールボックス



 次にテキスト入力による値の代入をテストするために、ツールボックスの「Windowsフォーム」タブから
TextBoxコントロールとButtonコントロールをフォームにドラッグして貼り付けます。

  これでテストフォームのUIは完成です。
ただし、このままだとボタンを押しても何もおきないので、ボタンのClickイベントのイベントハンドラを登録します。
コントロールへのイベントハンドラの登録の方法ですが、VB.NETとVC#.NETでは登録方法が違いますので、
ここでは両方を簡単に説明しておきましょう。

イベントハンドラの作成法


・VB.NETでのイベントハンドラの作成
 フォーム上で右クリックするとショートカットメニューが表示されるので、
[コードの表示]を選択してコードビューに切り替えます。
そして、コードビューのタブ(Form1.vb*)のすぐ下にある2つのコンボボックスのうちの左側から該当する
コントロールを選択し、右側からイベントハンドラを登録したいイベントを選択します。
すると、イベントハンドラが登録され、コードが自動生成されます。

・VC#.NETでのイベントハンドラの作成
 フォーム上でイベントハンドラを登録したいボタンを選択して右クリックするとショートカットメニューが 表示されるので、
[プロパティ]を選択してプロパティウィンドウを表示します。プロパティウィンドウの上部にある稲妻の形をした
イベントボタンを選択すると、プロパティウィンドウにイベントのリストが表示されます。
ここで、イベントハンドラを登録したいイベントを選択してダブルクリックすると、イベントハンドラが登録され、
コードが自動生成されます。

イベントハンドラのコード


 さて、今回のテストではVB.NETを利用しているので、上記のVB.NETの方法でボタンの
Clickイベントハンドラを作成し、以下のコードを追加します。

   AxDigitText1.Text = TextBox1.Text
   DigitText1.Text = TextBox1.Text

 このコードは、ボタンを押したときに、TextBox1の内容をAxDigitText1と、
DigitText1のTextプロパティに代入するという役目を果たします。
これで、作成したコントロールの、Key入力時の挙動と、Textプロパティに
値を代入したときの挙動をテストできるようになりました。


ページトップへ


最後に

 今回作成した.NETコントロールには、残念ながらバグがあります。
IMEを使用して入力すると、数字以外の文字が入力できてしまいます。
COMコントロールのほうは問題ありません。
この件に関して、Microsoft社に問い合わせたところ、対処のためのコードを教えてもらえたので、
修正版のソースを「DigitTextFixed.cs」として付録に収録しておきます。

 ただし、この回避コードは将来にわたって挙動を保障するものではなく、
あくまでも一時的な対処方法だということでした。
将来のバージョンの.NET Frameworkでこの問題が修正されることを願います。


前へ | ページトップへ | 次へ