Edit

Share via


IToggleProvider.Toggle Method

Definition

Cycles through the toggle states of a control.

public:
 void Toggle();
public void Toggle ();
abstract member Toggle : unit -> unit
Public Sub Toggle ()

Examples

The following example shows one possible implementation of this method for a custom control that can be toggled.

/// <summary>
/// Toggles the control.
/// </summary>
/// <remarks>
/// For this custom control the toggle state is reflected by the color 
/// of the control. This is analogous to the CheckBox IsChecked property.
/// Green   - ToggleState.On
/// Red     - ToggleState.Off
/// Yellow  - ToggleState.Indeterminate
/// </remarks>
void IToggleProvider.Toggle()
{
    ToggleState toggleState =
        customControl.toggleStateColor[customControl.controlColor];
    // Invoke control method on separate thread to avoid clashing with UI.
    // Use anonymous method for simplicity.
    this.customControl.Invoke(new MethodInvoker(delegate ()
    {
        if (toggleState == ToggleState.On)
        {
            customControl.controlColor = Color.Red;
        }
        else if (toggleState == ToggleState.Off)
        {
            customControl.controlColor = Color.Yellow;
        }
        else if (toggleState == ToggleState.Indeterminate)
        {
            customControl.controlColor = Color.Green;
        }
        customControl.Refresh();
    }));
}
''' <summary>
''' Toggles the control.
''' </summary>
''' <remarks>
''' For this custom control the toggle state is reflected by the color 
''' of the control. This is analogous to the CheckBox IsChecked property.
''' Green   - ToggleState.On
''' Red     - ToggleState.Off
''' Yellow  - ToggleState.Indeterminate
''' </remarks>
Private Sub Toggle() Implements IToggleProvider.Toggle
    Dim toggleState As ToggleState = customControl.toggleStateColor(customControl.controlColor)
    ' Invoke control method on separate thread to avoid clashing with UI.
    ' Use anonymous method for simplicity.
    Me.customControl.Invoke(New MethodInvoker(Sub()
                                                  If toggleState = Windows.Automation.ToggleState.On Then
                                                      customControl.controlColor = Color.Red
                                                  ElseIf toggleState = Windows.Automation.ToggleState.Off Then
                                                      customControl.controlColor = Color.Yellow
                                                  ElseIf toggleState = Windows.Automation.ToggleState.Indeterminate Then
                                                      customControl.controlColor = Color.Green
                                                  End If
                                                  customControl.Refresh()
                                              End Sub))
End Sub

Remarks

A control must cycle through its toggle states in this order: On, Off, and (if supported) Indeterminate.

Applies to

See also