- PR -

ActiveX(VB6)のコンストラクタ

1
投稿者投稿内容
ひろし
ぬし
会議室デビュー日: 2002/09/16
投稿数: 390
お住まい・勤務地: 兵庫県
投稿日時: 2008-09-06 20:08
VB6のプログラムをC#に移植しています。C#ではDDE通信がサポートされていないた
め、その部分だけをVB6のActiveXコントロールにして、C#から呼び出すことにしま
した。しかし、ActiveXをインスタンス化するところでC#コンパイラから"コンスト
ラクタが定義されていません"エラーが発生します。
Public Sub UserControl_Initialize()をC#がどうしてコンストラクタとして認識
してくれないのかが理解できません。
解決策を教えてください。宜しくお願いします。

再現手順

(1)Visual Basic 6のプロジェクトでActiveXコントロールを選択する。
(2)IDEで空のコンストラクタを作成する。
(3)外部からコンストラクタが参照できるようにPrivateをPublicに修正する。


' 以下、VB6のActiveXコントロール
Public Sub Test()
MsgBox "Hellow world."
End Sub

Public Sub UserControl_Initialize()

End Sub

(4)ディストリビューションウィザードでインストールパッケージを作成しターゲットマシンにインストールする。
(5)Visual Studio2008を起動し、参照を追加する。

// 以下、C#(コンパイルできない)
private void button1_Click(object sender, EventArgs e)
{
// コンストラクタが定義されていません。エラーが発生します。
Project1.UserControl1 uc = new Project1.UserControl1();
uc.Test;
}
Azulean
大ベテラン
会議室デビュー日: 2008/01/04
投稿数: 123
お住まい・勤務地: 大阪府
投稿日時: 2008-09-06 20:25
試していないので推測です。

ActiveXコントロールとして作成したのであれば、ツールボックスを右クリックしてアイテムの選択をクリックし、開くダイアログからCOMのタブに自分で作ったコントロールの名前があると思いますので、それにチェックを入れてOKを押して下さい。
ツールボックスにコントロールが追加され、これをデザイナで配置すればいけると思われます。

だめだったらごめんなさい。
ひろし
ぬし
会議室デビュー日: 2002/09/16
投稿数: 390
お住まい・勤務地: 兵庫県
投稿日時: 2008-09-07 00:04
ご回答ありがとうございます。

C#からActiveXを直接呼び出して機能することが確認できました。
助かりました。

ひろし
ぬし
会議室デビュー日: 2002/09/16
投稿数: 390
お住まい・勤務地: 兵庫県
投稿日時: 2008-09-07 00:05
ご回答ありがとうございます。

C#からActiveXを直接呼び出して機能することが確認できました。
助かりました。

1

スキルアップ/キャリアアップ(JOB@IT)