英語で読む

次の方法で共有


AutomationPropertyChangedEventHandler 代理人

定義

プロパティが変更されたときに UI オートメーション プロバイダーで発生するイベントを処理する UI オートメーション クライアント アプリケーションによって実装されるメソッドを表します。

C#
public delegate void AutomationPropertyChangedEventHandler(object sender, AutomationPropertyChangedEventArgs e);

パラメーター

sender
Object

イベントを発生させたオブジェクト。

e
AutomationPropertyChangedEventArgs

イベントに関する情報。

次の例では、サブスクライブされた要素の IsEnabled プロパティの変更が処理されます。

C#

AutomationPropertyChangedEventHandler propChangeHandler;
/// <summary>
/// Adds a handler for property-changed event; in particular, a change in the enabled state.
/// </summary>
/// <param name="element">The UI Automation element whose state is being monitored.</param>
public void SubscribePropertyChange(AutomationElement element)
{
    Automation.AddAutomationPropertyChangedEventHandler(element, 
        TreeScope.Element, 
        propChangeHandler = new AutomationPropertyChangedEventHandler(OnPropertyChange),
        AutomationElement.IsEnabledProperty);
}

/// <summary>
/// Handler for property changes.
/// </summary>
/// <param name="src">The source whose properties changed.</param>
/// <param name="e">Event arguments.</param>
private void OnPropertyChange(object src, AutomationPropertyChangedEventArgs e)
{
    AutomationElement sourceElement = src as AutomationElement;
    if (e.Property == AutomationElement.IsEnabledProperty)
    {
        bool enabled = (bool)e.NewValue;
        // TODO: Do something with the new value. 
        // The element that raised the event can be identified by its runtime ID property.
    }
    else
    { 
        // TODO: Handle other property-changed events.
    }
}

public void UnsubscribePropertyChange(AutomationElement element)
{
    if (propChangeHandler != null)
    {
        Automation.RemoveAutomationPropertyChangedEventHandler(element, propChangeHandler);
    }
}

注釈

によってsender表される にはAutomationElement、アプリケーションがアクティブな間CacheRequestにこのイベントをサブスクライブしたかどうかに応じて、キャッシュされたプロパティまたはパターンがない場合があります。

プロバイダーの実装によっては、プロパティ変更イベントは、必ずしもプロパティ値が異なっていることを示すわけではありません。これは、プロパティが同じ値に設定されたことを意味する可能性があります。 アプリケーションが実際の変更にのみ対応する必要がある場合は、プロパティの状態を追跡する必要があります。

拡張メソッド

GetMethodInfo(Delegate)

指定したデリゲートによって表されるメソッドを表すオブジェクトを取得します。

適用対象

製品 バージョン
.NET Framework 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
Windows Desktop 3.0, 3.1, 5, 6, 7, 8, 9, 10

こちらもご覧ください