Rez*_*aei 11
您可以将OwnerDraw
property 设置ListView
为true并绘制ChceckBox
第一列标题和句柄ColumnClick
以执行select/deselect all.
为了绘制ListView
你需要处理DrawColumnHeader
,DrawItem
和DrawSubItem
事件.
在DrawColumnHeader
事件中绘制复选框.
e.DrawDefault = true;
其他绘图事件以绘制默认渲染.ColumnClick
事件并将列标题的已检查状态存储在列标记中.同样对于列表视图的每个项目,设置Checked
属性以执行select/deselect all.码:
private void listView1_DrawColumnHeader(object sender,
DrawListViewColumnHeaderEventArgs e)
{
if (e.ColumnIndex == 0)
{
e.DrawBackground();
bool value = false;
try
{
value = Convert.ToBoolean(e.Header.Tag);
}
catch (Exception)
{
}
CheckBoxRenderer.DrawCheckBox(e.Graphics,
new Point(e.Bounds.Left + 4, e.Bounds.Top + 4),
value ? System.Windows.Forms.VisualStyles.CheckBoxState.CheckedNormal :
System.Windows.Forms.VisualStyles.CheckBoxState.UncheckedNormal);
}
else
{
e.DrawDefault = true;
}
}
private void listView1_DrawItem(object sender, DrawListViewItemEventArgs e)
{
e.DrawDefault = true;
}
private void listView1_DrawSubItem(object sender, DrawListViewSubItemEventArgs e)
{
e.DrawDefault = true;
}
private void listView1_ColumnClick(object sender, ColumnClickEventArgs e)
{
if (e.Column == 0)
{
bool value = false;
try
{
value = Convert.ToBoolean(this.listView1.Columns[e.Column].Tag);
}
catch (Exception)
{
}
this.listView1.Columns[e.Column].Tag = !value;
foreach (ListViewItem item in this.listView1.Items)
item.Checked = !value;
this.listView1.Invalidate();
}
}
Run Code Online (Sandbox Code Playgroud)
截图:
CheckBoxes
属性设置ListView
为true. 归档时间: |
|
查看次数: |
7386 次 |
最近记录: |