次のようなインターフェイスが定義された C# ActiveX コントロールがあります。
int MyInt { get; set; }
string MyString { get; set; }
Color MyColor { get; set; }
インターフェイスは次のように実装されます。
protected int myInternalInt;
protected string myInternalString;
protected Color myInternalColor;
public int MyInt { get { return myInternalInt; } set { myInternalInt = value; } }
public string MyString { get { return myInternalString; } set { myInternalString = value; } }
public Color MyColor { get { return myInternalColor; } set { myInternalColor = value; } }
int および string プロパティ (および私が試したその他の基本的な型) は期待どおりに機能しますが、Color 型は機能しません。コントロールのプロパティ ページは、型を正しく解釈し、色の型を選択するためのドロップダウンを作成します。ただし、Color-type プロパティの現在の内部値 (代わりに Black を表示、つまりデフォルト) は表示されず、ユーザーが行った変更も返されません。「保護されたカラー myInternalColor = Color.Blue;」のように、myInternalColor が上記で明示的に初期化されている場合も同様です。
Color プロパティを機能させる方法、つまり、その値をコントロールの内外に正しく渡す方法について、誰かが光を当てることができますか?
+++++++++++++++++++++++++++++++++
上記で概説した問題は、COM Interop の問題である可能性があります。VS2008 開発環境内の UserControl TestContainer は Color プロパティと正しくやり取りしているように見えますが、VS6 で提供される ActiveX コントロール テスト コンテナーはそうではありません。コントロールが実行されるように設計された実際のコンテナーは COM ベースであり、前述の Ax テスト コンテナーも同様であると確信しています。
(そして、ユーザー コントロールの開発は初めてなので、私が開発している WinForm コントロールが技術的に ActiveX コントロールではないことを理解できなかったようです。これは、最近の調査で初めてわかった違いです。)