Microsoft Word 用の UI オートメーション アプリケーションを開発しています。RichEdit テキスト ボックスの場合、メソッド「AddAutomationPropertyChangedEventHandler」を介して特定のハンドラーを介して「AutoAddAutomationPropertyChanged」イベントをキャッチする必要があります。RichEdit コントロールを表す AutomationElement "要素" があり、クラスにイベントを追加しました。
Automation.AddAutomationPropertyChangedEventHandler(element, TreeScope.Subtree, OnPropertyChanged, new[] { ValuePattern.ValueProperty });
私のハンドラーは次のとおりです。
private void OnPropertyChanged(object sender, AutomationPropertyChangedEventArgs e)
{
if (e.Property == ValuePattern.ValueProperty)
{
...code...
}
}
問題は、このコードを「RichEdit20W」タイプの RichEdit で実行すると、機能し、イベントをキャッチして、OnPropertyChanged ハンドラー メソッドに入ることです。私の問題は、RICHED60W テキスト コントロールでこのコードを実行することです。Richedit60w テキスト コントロールからイベントがトリガーされないように見えるため、イベントをキャッチしてハンドラー コードを実行することはできません。
たとえば、Microsoft Word 2010 では、「検索と置換」ウィンドウのリッチエディット コントロールを使用してこのコードを実行すると、動作し、ハンドラー コードが実行されます。逆に、メインの Word アプリケーション ウィンドウの左側にある RichEdit テキスト コントロールを使用してコードを実行すると、RICHEDIT60W (CTRL + F で開いた「ナビゲーション」ペイン、およびInspect.exeツールを使用して確認した)、は機能せず、ハンドラ コードは実行されません。Windows SDK で提供されているAccevent.exeツールを使用して RICHEDIT60W で同じプロパティ値の変更イベントをキャッチしようとすると、ツールが正常に動作し、イベント情報が表示されるため、非常に混乱しています。
メソッドに TreeScope.Element および TreeScope.Children パラメーターを使用しても、すべてを試しましたが、何も起こりません。
要素が値パターンをサポートしているかどうかを確認します (明らかにサポートしています...)。これは次のとおりです。
自動化フレームワークでテキストフィールド/テキストボックスにテキストを設定し、変更イベントを取得します
よろしくお願いします。私の英語で申し訳ありません。