Controlクラスから派生したカスタム リスト コントロールがあります。
MSAA (Microsoft Active Accessibility)を通じて、障害のある人がアクセスできるようにする必要があります。
これまでのところ、 ControlAccessibleObjectから継承するクラスを作成し、そのインスタンスをControl.CreateAccessibilityInstanceメソッドのオーバーライドで返す必要があることを理解しています。
問題は、これを実装したことですが、Windows ナレーター ツールでは機能しないようです。
たとえば、標準の ListView でアイテムをクリックすると、ナレーターが選択したアイテムのテキストを読み上げます。
しかし、コントロール内の項目をクリックしても何も起こりません (項目テキストはControlAccessibleObject実装で要求されます) 。
IAccessibleも実装する必要があると思いましたが、.NET 参照ソース コードを調べたところ、ListView はこのインターフェイスを実装していません。これはラップされた Win32 コントロールに実装されているのではないかと考えたので、同様のコントロールである DataGridView を調べましたが、これは IAccessible も実装していません。
DataGridView にはアクセシビリティ サポートがありますが、DataGridViewAccessibleObject の重要なコードをすべてコピーしましたが、それでも私のコントロールでは機能しません。
WinForms でのカスタム コントロールのアクセシビリティの経験が豊富な人はいますか?