1

1 台のコンピューター'A'(win vista 32 ビット) でプログラムをデバッグ モードで実行すると、すべてのリッチテキスト ボックス コントロールが'property cannot be set'エラーをスローします。(エラーなしで)アプリケーション全体をビルドできますが、このコンピューターまたはコンピューター(win xp)exeにアプリケーションをインストールして実行すると、両方で同じ問題が発生します。'B'

ただし、コンピューター ' ' でまったく同じコードをデバッグ モードで実行すると、Bエラーは発生しません。アプリケーションをビルドしてコンピュータ ' B' にインストールすると、正常に動作します。このアプリケーションをコンピュータ ' A' にインストールすると、問題なく動作します。配布用にアプリケーションをまとめる場合、両方のコンピューターが の同一のコピーを使用しますrichtx32.ocx(コードと同様に、同じリポジトリからチェックアウトされます)。

コンピューター上のコードの以前のコピー (以前は正常に動作していたもの) をチェックアウトするAと、最新バージョンのコードと同じ問題が発生します。

何が起こっているのかわかりません、助けてください!

4

2 に答える 2

1

Visual Studio 6.0 Service Pack 4 で配布されProperty cannot be setているリッチ テキスト コントロールのバージョンで解決されているメッセージへの複数の参照と、SP5 で修正された別のメッセージを確認しています。Property cannot be set

何よりもまず、最低限の SP5 がインストールされていることを確認してください。SP6だけでいいのに。

参考までに、私の Microsoft Rich Textbox Control 6.0 (SP6) は でC:\Windows\System32\RICHTX32.OCX、バージョンは6.1.97.82です。

両方のマシンに同じコントロールのコピーがインストールされているとおっしゃいました。完全を期すために、インストール後に新しいコントロールが登録されていることを再確認することをお勧めします。

編集:

HKEY_CLASSES_ROOT\CLSID\{3B7C8860-D78F-101B-B9B5-04021C009402}レジストリ キーをエクスポートしました。

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\CLSID\{3B7C8860-D78F-101B-B9B5-04021C009402}]
@="Microsoft Rich Textbox Control 6.0 (SP6)"

[HKEY_CLASSES_ROOT\CLSID\{3B7C8860-D78F-101B-B9B5-04021C009402}\Control]

[HKEY_CLASSES_ROOT\CLSID\{3B7C8860-D78F-101B-B9B5-04021C009402}\Implemented Categories]

[HKEY_CLASSES_ROOT\CLSID\{3B7C8860-D78F-101B-B9B5-04021C009402}\Implemented Categories\{0DE86A52-2BAA-11CF-A229-00AA003D7352}]

[HKEY_CLASSES_ROOT\CLSID\{3B7C8860-D78F-101B-B9B5-04021C009402}\Implemented Categories\{0DE86A53-2BAA-11CF-A229-00AA003D7352}]

[HKEY_CLASSES_ROOT\CLSID\{3B7C8860-D78F-101B-B9B5-04021C009402}\Implemented Categories\{0DE86A57-2BAA-11CF-A229-00AA003D7352}]

[HKEY_CLASSES_ROOT\CLSID\{3B7C8860-D78F-101B-B9B5-04021C009402}\Implemented Categories\{40FC6ED4-2438-11CF-A3DB-080036F12502}]

[HKEY_CLASSES_ROOT\CLSID\{3B7C8860-D78F-101B-B9B5-04021C009402}\Implemented Categories\{40FC6ED5-2438-11CF-A3DB-080036F12502}]

[HKEY_CLASSES_ROOT\CLSID\{3B7C8860-D78F-101B-B9B5-04021C009402}\Implemented Categories\{7DD95802-9882-11CF-9FA9-00AA006C42C4}]

[HKEY_CLASSES_ROOT\CLSID\{3B7C8860-D78F-101B-B9B5-04021C009402}\InprocServer32]
@="C:\\Windows\\system32\\RICHTX32.OCX"
"ThreadingModel"="Apartment"

[HKEY_CLASSES_ROOT\CLSID\{3B7C8860-D78F-101B-B9B5-04021C009402}\MiscStatus]
@="0"

[HKEY_CLASSES_ROOT\CLSID\{3B7C8860-D78F-101B-B9B5-04021C009402}\MiscStatus\1]
@="131473"

[HKEY_CLASSES_ROOT\CLSID\{3B7C8860-D78F-101B-B9B5-04021C009402}\ProgID]
@="RICHTEXT.RichtextCtrl.1"

[HKEY_CLASSES_ROOT\CLSID\{3B7C8860-D78F-101B-B9B5-04021C009402}\Programmable]

[HKEY_CLASSES_ROOT\CLSID\{3B7C8860-D78F-101B-B9B5-04021C009402}\ToolboxBitmap32]
@="C:\\Windows\\system32\\RICHTX32.OCX, 1"

[HKEY_CLASSES_ROOT\CLSID\{3B7C8860-D78F-101B-B9B5-04021C009402}\TypeLib]
@="{3B7C8863-D78F-101B-B9B5-04021C009402}"

[HKEY_CLASSES_ROOT\CLSID\{3B7C8860-D78F-101B-B9B5-04021C009402}\Version]
@="1.2"

[HKEY_CLASSES_ROOT\CLSID\{3B7C8860-D78F-101B-B9B5-04021C009402}\VersionIndependentProgID]
@="RICHTEXT.RichtextCtrl"
于 2012-11-16T18:41:56.543 に答える
1

system32 ディレクトリにある不正な richtx32.oca ファイルが原因のようです。

.ocaファイルの機能は次のとおりです。

コントロールのプロパティには、フレームワークによって提供されるものと、コントロール自体によって提供されるものがあります。プログラムでは、フレームワークとコントロールのプロパティはすべて、コントロールのプロパティとして表示されます。

これらのプロパティを表示するために、Visual Basic は、コントロールがツールボックスに読み込まれるときに拡張タイプ ライブラリを作成します。コントロールのタイプ ライブラリを読み取って拡張タイプ ライブラリを作成するプロセスには時間がかかるため、Visual Basic は拡張タイプ ライブラリの情報を OCA ファイルにキャッシュします。

Visual Basic が認識したコントロールの OCA ファイルを削除すると、そのコントロールを必要とするプロジェクトをロードしたときに、Visual Basic によって .OCA ファイルが再作成されます。このレクリエーション プロセスには時間のペナルティが伴います。

そのため、不適切な .oca ファイルが存在すると、IDE とコンパイルされた .exe の両方でコントロールのプロパティが影響を受ける可能性があるようです。解決策は、system32 フォルダー内の .oca ファイルを削除してから、プロジェクトを再度ロードすることです。

于 2012-11-18T09:11:53.330 に答える