ExpandCollapsePattern.Collapse 方法
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
隐藏 AutomationElement 的所有子代节点、控件或内容。
public:
void Collapse();
public void Collapse ();
member this.Collapse : unit -> unit
Public Sub Collapse ()
例外
示例
在以下示例中,表示菜单项的 UI 自动化元素传递给一个函数,该函数尝试根据菜单项的当前 ExpandCollapseState展开或折叠。
///--------------------------------------------------------------------
/// <summary>
/// Obtains an ExpandCollapsePattern control pattern from an
/// automation element.
/// </summary>
/// <param name="targetControl">
/// The automation element of interest.
/// </param>
/// <returns>
/// A ExpandCollapsePattern object.
/// </returns>
///--------------------------------------------------------------------
private ExpandCollapsePattern GetExpandCollapsePattern(
AutomationElement targetControl)
{
ExpandCollapsePattern expandCollapsePattern = null;
try
{
expandCollapsePattern =
targetControl.GetCurrentPattern(
ExpandCollapsePattern.Pattern)
as ExpandCollapsePattern;
}
// Object doesn't support the ExpandCollapsePattern control pattern.
catch (InvalidOperationException)
{
return null;
}
return expandCollapsePattern;
}
'''--------------------------------------------------------------------
''' <summary>
''' Obtains an ExpandCollapsePattern control pattern from an
''' automation element.
''' </summary>
''' <param name="targetControl">
''' The automation element of interest.
''' </param>
''' <returns>
''' A ExpandCollapsePattern object.
''' </returns>
'''--------------------------------------------------------------------
Private Function GetExpandCollapsePattern( _
ByVal targetControl As AutomationElement) As ExpandCollapsePattern
Dim expandCollapsePattern As ExpandCollapsePattern = Nothing
Try
expandCollapsePattern = DirectCast( _
targetControl.GetCurrentPattern(expandCollapsePattern.Pattern), _
ExpandCollapsePattern)
Catch exc As InvalidOperationException
' Object doesn't support the ExpandCollapsePattern control pattern.
Return Nothing
End Try
Return expandCollapsePattern
End Function 'GetExpandCollapsePattern
///--------------------------------------------------------------------
/// <summary>
/// Programmatically expand or collapse a menu item.
/// </summary>
/// <param name="menuItem">
/// The target menu item.
/// </param>
///--------------------------------------------------------------------
private void ExpandCollapseMenuItem(
AutomationElement menuItem)
{
if (menuItem == null)
{
throw new ArgumentNullException(
"AutomationElement argument cannot be null.");
}
ExpandCollapsePattern expandCollapsePattern =
GetExpandCollapsePattern(menuItem);
if (expandCollapsePattern == null)
{
return;
}
if (expandCollapsePattern.Current.ExpandCollapseState ==
ExpandCollapseState.LeafNode)
{
return;
}
try
{
if (expandCollapsePattern.Current.ExpandCollapseState == ExpandCollapseState.Expanded)
{
// Collapse the menu item.
expandCollapsePattern.Collapse();
}
else if (expandCollapsePattern.Current.ExpandCollapseState == ExpandCollapseState.Collapsed ||
expandCollapsePattern.Current.ExpandCollapseState == ExpandCollapseState.PartiallyExpanded)
{
// Expand the menu item.
expandCollapsePattern.Expand();
}
}
// Control is not enabled
catch (ElementNotEnabledException)
{
// TO DO: error handling.
}
// Control is unable to perform operation.
catch (InvalidOperationException)
{
// TO DO: error handling.
}
}
'''--------------------------------------------------------------------
''' <summary>
''' Programmatically expand or collapse a menu item.
''' </summary>
''' <param name="menuItem">
''' The target menu item.
''' </param>
'''--------------------------------------------------------------------
Private Sub ExpandCollapseMenuItem(ByVal menuItem As AutomationElement)
If menuItem Is Nothing Then
Throw New ArgumentNullException( _
"AutomationElement argument cannot be null.")
End If
Dim expandCollapsePattern As ExpandCollapsePattern = _
GetExpandCollapsePattern(menuItem)
If expandCollapsePattern Is Nothing Then
Return
End If
If expandCollapsePattern.Current.ExpandCollapseState = _
ExpandCollapseState.LeafNode Then
Return
End If
Try
If expandCollapsePattern.Current.ExpandCollapseState = _
ExpandCollapseState.Expanded Then
' Collapse the menu item.
expandCollapsePattern.Collapse()
ElseIf expandCollapsePattern.Current.ExpandCollapseState = _
ExpandCollapseState.Collapsed OrElse _
expandCollapsePattern.Current.ExpandCollapseState = _
ExpandCollapseState.PartiallyExpanded Then
' Expand the menu item.
expandCollapsePattern.Expand()
End If
Catch exc As ElementNotEnabledException
' Control is not enabled
' TO DO: error handling.
Catch exc As InvalidOperationException
' Control is unable to perform operation
' TO DO: error handling.
End Try
End Sub
注解
这是 UI 自动化元素折叠后返回的阻塞方法。
在某些情况下,标记为叶节点的 UI 自动化元素在调用 或 Expand 方法之前Collapse可能不知道它是否具有子级。 对于延迟加载其子项的树视图控件,此行为是可能的。 例如,即使当前没有子项,Microsoft Windows 资源管理器也可能显示节点的展开图标;单击图标时,控件将轮询子项,查找任何项,并删除展开图标。 在这些情况下,客户端应通过向 方法注册事件处理程序AddAutomationPropertyChangedEventHandler来侦听属性上的ExpandCollapseState属性更改事件。