1


1

ToolStripStatusLabelによるUIAutomation

WinFormsアプリを持っていますが、UIAutomationを介して + ToolStripStatusLabel +`のテキストにアクセスできないようです。 Microsoft http://msdn.microsoft.com/en-us/library/ms744822(VS.85).aspx [意味] `+ StatusStrip + s(およびおそらくその中のアイテム)のサポートは制限されていますが、これは動作するはずの基本的な十分なユースケースのように。

コントロールはUISpyの `+ ControlType.Edit +`で表示され、読み取り専用のテキストボックスのように見えますが、値は常にテキストではなく名前と同じです。

UISpyのプロパティは以下の通りです。

AutomationElement
  General Accessibility
    AccessKey:  ""
    AcceleratorKey: ""
    IsKeyboardFocusable:    "False"
    LabeledBy:  "(null)"
    HelpText:   ""

  State
    IsEnabled:  "True"
    HasKeyboardFocus:   "False"

  Identification
    ClassName:  ""
    ControlType:    "ControlType.Edit"
    Culture:    "(null)"
    AutomationId:   "StatusBar.Pane0"
    LocalizedControlType:   "edit"
    Name:   "My Label"
    ProcessId:  "3972 (*****)"
    RuntimeId:  "42 134002 0"
    IsPassword: "False"
    IsControlElement:   "True"
    IsContentElement:   "True"

  Visibility
    BoundingRectangle:  "(9, 273, 79, 17)"
    ClickablePoint: "48,281"
    IsOffscreen:    "False"

ControlPatterns
  GridItem
    Row:    "0"
    Column: "0"
    RowSpan:    "1"
    ColumnSpan: "1"
    ContainingGrid: ""status bar" "statusStrip""

  Value
    Value:  "My Label"
    IsReadOnly: "True"

基本的に、 `+ myLabel.Text =" something "+`に進み、UIAutomationを介して何らかの方法でその値を取得できるようにすることを望んでいます。

3 Answer


1


`+ ToolStripStatusLabel `コントロールの ` .Text `に加えて、 ` AccessibleName +`プロパティを設定します。 私はWhiteを同じようなシナリオで使っています。

+ statusLabel.Text = statusLabel.AccessibleName ="新しいステータス値 "; +


0


私はこれを回避するために、テキストが異なる2つのラベルを作成し、適切なラベルを表示したり非表示にしたりする必要がありました。 これは私の目的(Whiteでのテスト)には十分ですが、UIAutomationがテキスト値を表面化していないことにとても驚いています - それは基本的にWinFormsアプリケーションのステータスバーのすべてのテキストがスクリーンリーダーにアクセスできないことを意味します。


0


私はあなたが説明したのと同じようなラベルのテキストを検索するのに問題があったことは一度もありません。 実際、 `+ AutomationId `は私のアプリケーションでも同じです。 ` ControlType `が ` ControlType.Edit +`として表示されるという事実は誤解を招きます。 e.g. 以下が動作します

statusText = (string)automationElement.GetCurrentPropertyValue(ValuePattern.ValueProperty);

`+ AutomationId `が `" StatusBar.Pane0 "`の ` ControlType.Edit `に対してFindメソッドを使用して、 ` automationElement +`が配置されている場所。