2009-06-11 24 views
2

フォームに配置することなく、アプリケーションにActiveXコントロールを動的に追加しようとしています。動的にVSデザイナーのないActiveXコントロールを追加する

ただし、Visual Studioデザイナを使用してActiveXコントロールを配置すると、初期化コードにActiveXコントロールのOcxStateを設定するステートメントが含まれています。

デザイナを使用してActiveXコントロールをフォームに追加すると、OcxStateはリソースファイルにシリアル化され、後でフォームの初期化時に取得されるようです。

これでOcxStateを動的にコードに設定したいので、私のクラスライブラリのActiveXのための何らかのラッパークラスを作成することができます。

ActiveXコントロールのOcxStateを動的に設定する方法は誰でも知っていますか?

ありがとうございます!

マチュー

+0

解決方法を見つけましたか? –

+3

待つ...あなたの投稿のタイトルは、デザイナーの助けを借りずに実行時にフォームにActiveXを動的に追加することを提案しています。しかし、あなたの説明は、ActiveXを動的に作成して、フォームに入れないように思えます。それは可能ではありません、ActiveXコントロールには、フォームが提供するホスティングサイトが必要です。ホスティングサイトを必要としないコンポーネントは、ActiveXコントロールではなく、OLEオートメーションまたはCOMと呼ばれます。 –

答えて

1

私は、私は今で得たソリューションはそれが表示されていない、労働者のフォームで作業しているのと同じ問題に取り組んで、私はOCXをロードしてできる場所すべてのイベントとのメソッドをラッパー外にocx。 私のライブラリクラスでは、ocxコールの代わりに他のクラスと同じフォームを使用します。

+1

あなたのソリューションについて記述できますか? –

1

データ操作用のActiveXコントロールが必要な.NETプロジェクトで同じ問題が発生しました。私はフォームにActiveXコントロールを配置し、アプリケーションと共にロードし、パブリックプロパティでそれを使用しなければなりませんでした。そうでなければ、コントロールのインスタンスを作成するだけで、機能の一部が失われます。

フォームは常に表示する必要はありませんが、ActiveXコントロールが存在するコンテナを提供します。

0

別の方法は、あなたがあなたのActiveXコントロールユーザーコントロールを作成することができます 、のUserControlです。これで、実行時に動的に必要な場所にユーザーコントロールを読み込むことができます。

関連する問題