ListViewItemStates 枚举
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
定义表示 ListViewItem 的可能状态的常数。
此枚举支持其成员值的按位组合。
public enum class ListViewItemStates
[System.Flags]
public enum ListViewItemStates
[<System.Flags>]
type ListViewItemStates =
Public Enum ListViewItemStates
- 继承
- 属性
字段
Checked | 8 | 已选中该项。 |
Default | 32 | 该项处于它的默认状态。 |
Focused | 16 | 该项有焦点。 |
Grayed | 2 | 该项已禁用。 |
Hot | 64 | 该项当前位于鼠标指针下。 |
Indeterminate | 256 | 该项处于不确定的状态。 |
Marked | 128 | 该项已被标记。 |
Selected | 1 | 该项已选定。 |
ShowKeyboardCues | 512 | 该项应指示键盘快捷键。 |
示例
以下示例演示如何为 ListView 控件提供自定义绘图。 示例中的 ListView 控件具有渐变背景。 具有负值的子项具有红色前景和黑色背景。
事件的 ListView.DrawItem 处理程序为整个项和列标题行绘制背景。 事件的处理程序 ListView.DrawSubItem 为具有负值的子项绘制文本值以及文本和背景。
组件 ContextMenu 提供了一种在详细信息视图和列表之间切换的方法。 在列表视图中,仅 ListView.DrawItem 触发 事件。 在这种情况下,文本和背景均在 事件处理程序中 ListView.DrawItem 绘制。
有关完整示例,请参阅 ListView.OwnerDraw 参考主题。
// Draws the backgrounds for entire ListView items.
private void listView1_DrawItem(object sender,
DrawListViewItemEventArgs e)
{
if ((e.State & ListViewItemStates.Selected) != 0)
{
// Draw the background and focus rectangle for a selected item.
e.Graphics.FillRectangle(Brushes.Maroon, e.Bounds);
e.DrawFocusRectangle();
}
else
{
// Draw the background for an unselected item.
using (LinearGradientBrush brush =
new LinearGradientBrush(e.Bounds, Color.Orange,
Color.Maroon, LinearGradientMode.Horizontal))
{
e.Graphics.FillRectangle(brush, e.Bounds);
}
}
// Draw the item text for views other than the Details view.
if (listView1.View != View.Details)
{
e.DrawText();
}
}
' Draws the backgrounds for entire ListView items.
Private Sub listView1_DrawItem(ByVal sender As Object, _
ByVal e As DrawListViewItemEventArgs) _
Handles listView1.DrawItem
If Not (e.State And ListViewItemStates.Selected) = 0 Then
' Draw the background for a selected item.
e.Graphics.FillRectangle(Brushes.Maroon, e.Bounds)
e.DrawFocusRectangle()
Else
' Draw the background for an unselected item.
Dim brush As New LinearGradientBrush(e.Bounds, Color.Orange, _
Color.Maroon, LinearGradientMode.Horizontal)
Try
e.Graphics.FillRectangle(brush, e.Bounds)
Finally
brush.Dispose()
End Try
End If
' Draw the item text for views other than the Details view.
If Not Me.listView1.View = View.Details Then
e.DrawText()
End If
End Sub
注解
此枚举由 DrawListViewItemEventArgs.State 和 DrawListViewSubItemEventArgs.ItemState 属性使用。 有关详细信息,请参阅 ListView.DrawItem 和 ListView.DrawSubItem 事件。