0

独自の画像タイプを開いて操作するためのActiveXコントロールがあります。コントロールをAccessフォームに埋め込むことができ、オブジェクトブラウザを使用してすべてのクラスメンバーを確認できます。私が抱えている唯一の問題は、コントロールによって発生したイベントのいくつかを処理することです。

たとえば、オブジェクトブラウザから、次のイベント定義を確認できます。

Event RightClicked()

そして、次のコードをフォームに追加すると、次のようになります。

Private Sub CtrlInstanceName_RightClicked()
  'Anything here
End Sub

すべてが期待どおりに機能します。ただし、イベント宣言に次のようなパラメータが渡されている場合:

Event MeasurementUpdated(id as Long)

追加:

Private Sub CtrlInstanceName_MeasurementUpdated(id as Long)
  'Anything here
End Sub

次のエラーが発生します。

イベントプロパティ設定として入力した式...で、次のエラーが発生しました。プロシージャ宣言が、同じ名前のイベントまたはプロシージャの説明と一致しません。

この2番目のハンドラーを追加した後、さらに奇妙なことに、フォームおよびフォーム上の他のコントロールによって発生したイベントを含め、フォーム上のすべてのイベントハンドラーがこのエラーを生成します。

私はC#.NETアプリケーションでActiveXコントロールをテストし、そこでイベントを処理することができます(ただし、期待どおりには機能しません)。Visual Studioでは、関数プロトタイプは、自動定義されたイベントハンドラークラスタイプでは少し奇妙になります。

このエラーを回避するためにイベントプロシージャ宣言を変更する必要がある方法についてのアイデアはありますか?

4

1 に答える 1

0

ほとんどの金曜日の質問と同じように、後で私はこれに対する答えがかなり単純であることに気づきました。

まず、VBAコードエディターに慣れていないため、コードの上にあるオブジェクトコンボボックスを使用して埋め込みコントロールのスタブを作成できることを知りませんでした。コントロール名を選択した後MeasurementUpdate、プロシージャコンボボックスからイベントを選択しました。

正しい宣言は次のとおりです。

Private Sub CtrlInstanceName_MeasurementUpdated(ByVal id as Long)
  'Anything here
End Sub

主な違いはByVal修飾子です。

于 2012-07-24T18:45:13.310 に答える