Condividi tramite


ValuePattern.SetValue(String) Metodo

Definizione

Imposta il valore del controllo.

public:
 void SetValue(System::String ^ value);
public void SetValue (string value);
member this.SetValue : string -> unit
Public Sub SetValue (value As String)

Parametri

value
String

Valore da impostare. Il provider di automazione interfaccia utente è responsabile della conversione del valore nel tipo di dati appropriato.

Eccezioni

Il controllo è di sola lettura.

Il controllo non è abilitato.

Esempio

Nell'esempio seguente un oggetto AutomationElement che supporta il ValuePattern pattern di controllo ha il relativo ValueProperty valore impostato su un valore specificato dall'utente.

///--------------------------------------------------------------------
/// <summary>
/// Inserts a string into a text control that supports ValuePattern.
/// </summary>
/// <param name="targetControl">A text control.</param>
/// <param name="value">The string to be inserted.</param>
///--------------------------------------------------------------------
private void InsertText(AutomationElement targetControl,
                                    string value)
{
    // Validate arguments / initial setup
    if (value == null)
        throw new ArgumentNullException(
            "String parameter must not be null.");

    if (targetControl == null)
        throw new ArgumentNullException(
            "AutomationElement parameter must not be null");

    // A series of basic checks prior to attempting an insertion.
    //
    // Check #1: Is control enabled?
    // An alternative to testing for static or read-only controls 
    // is to filter using 
    // PropertyCondition(AutomationElement.IsEnabledProperty, true) 
    // and exclude all read-only text controls from the collection.
    if (!targetControl.Current.IsEnabled)
    {
        throw new InvalidOperationException(
            "The control is not enabled.\n\n");
    }

    // Check #2: Are there styles that prohibit us 
    //           from sending text to this control?
    if (!targetControl.Current.IsKeyboardFocusable)
    {
        throw new InvalidOperationException(
            "The control is not focusable.\n\n");
    }

    // Once you have an instance of an AutomationElement,  
    // check if it supports the ValuePattern pattern.
    object valuePattern = null;

    if (!targetControl.TryGetCurrentPattern(
        ValuePattern.Pattern, out valuePattern))
    {
        // Elements that support TextPattern 
        // do not support ValuePattern and TextPattern
        // does not support setting the text of 
        // multi-line edit or document controls.
        // For this reason, text input must be simulated.
    }
    // Control supports the ValuePattern pattern so we can 
    // use the SetValue method to insert content.
    else
    {
        if (((ValuePattern)valuePattern).Current.IsReadOnly)
        {
            throw new InvalidOperationException(
                "The control is read-only.");
        }
        else
        {
            ((ValuePattern)valuePattern).SetValue(value);
        }
    }
}
'''--------------------------------------------------------------------
''' <summary>
''' Inserts a string into a text control that supports ValuePattern.
''' </summary>
''' <param name="targetControl">A text control.</param>
''' <param name="value">The string to be inserted.</param>
'''--------------------------------------------------------------------
Private Sub InsertText(ByVal targetControl As AutomationElement, _
ByVal value As String)
    ' Validate arguments / initial setup
    If value Is Nothing Then
        Throw New ArgumentNullException( _
        "String parameter must not be null.")
    End If

    If targetControl Is Nothing Then
        Throw New ArgumentNullException( _
        "AutomationElement parameter must not be null")
    End If

    ' A series of basic checks prior to attempting an insertion.
    '
    ' Check #1: Is control enabled?
    ' An alternative to testing for static or read-only controls 
    ' is to filter using 
    ' PropertyCondition(AutomationElement.IsEnabledProperty, true) 
    ' and exclude all read-only text controls from the collection.
    If Not targetControl.Current.IsEnabled Then
        Throw New InvalidOperationException( _
        "The control is not enabled." + vbLf + vbLf)
    End If

    ' Check #2: Are there styles that prohibit us 
    '           from sending text to this control?
    If Not targetControl.Current.IsKeyboardFocusable Then
        Throw New InvalidOperationException( _
        "The control is not focusable." + vbLf + vbLf)
    End If

    ' Once you have an instance of an AutomationElement,  
    ' check if it supports the ValuePattern pattern.
    Dim valuePattern As Object = Nothing

    If Not targetControl.TryGetCurrentPattern( _
    valuePattern.Pattern, valuePattern) Then
        ' Elements that support TextPattern 
        ' do not support ValuePattern and TextPattern
        ' does not support setting the text of 
        ' multi-line edit or document controls.
        ' For this reason, text input must be simulated.
        ' Control supports the ValuePattern pattern so we can 
        ' use the SetValue method to insert content.
    Else
        If CType(valuePattern, ValuePattern).Current.IsReadOnly Then
            Throw New InvalidOperationException("The control is read-only.")
        Else
            CType(valuePattern, ValuePattern).SetValue(value)
        End If
    End If

End Sub

Commenti

I controlli di modifica a riga singola supportano l'accesso a livello di codice al contenuto tramite ValuePattern. Tuttavia, i controlli di modifica su più righe non supportano ; ValuePatternforniscono invece l'accesso al contenuto tramite il TextPattern pattern di controllo.

Si applica a

Vedi anche