개발/개발 자료

(C#) ListView 첫 열에 Checkbox 넣기

시원한물냉 2015. 2. 2. 13:37
public partial class Form1 : Form
{
bool clicked = false;
CheckBoxState state;
public Form1()
{
InitializeComponent();
listView1.View = View.Details;
listView1.Columns.Add("Col1", 150);
listView1.Columns.Add("Col2", 150);
listView1.Columns.Add("Col3", 150);
listView1.Columns.Add("Col4", 150);
listView1.HeaderStyle = ColumnHeaderStyle.Clickable;
listView1.CheckBoxes = true;
listView1.OwnerDraw = true;
 
for(int i = 0; i < 10; i++)
listView1.Items.Add("Value " + i);
}
 
private void listView1_ColumnClick(object sender, ColumnClickEventArgs e)
{
if (!clicked)
{
clicked = true;
state = CheckBoxState.CheckedPressed;
 
foreach (ListViewItem item in listView1.Items)
{
item.Checked = true;
}
 
Invalidate();
}
else
{
clicked = false;
state = CheckBoxState.UncheckedNormal;
Invalidate();
 
foreach (ListViewItem item in listView1.Items)
{
item.Checked = false;
}
}
}
 
private void listView1_DrawColumnHeader(object sender, DrawListViewColumnHeaderEventArgs e)
{
TextFormatFlags flags = TextFormatFlags.LeftAndRightPadding;
e.DrawBackground();
CheckBoxRenderer.DrawCheckBox(e.Graphics, ClientRectangle.Location, state);
e.DrawText(flags);
}
 
private void listView1_DrawItem(object sender, DrawListViewItemEventArgs e)
{
e.DrawDefault = true;
}
 
private void listView1_DrawSubItem(object sender, DrawListViewSubItemEventArgs e)
{
e.DrawDefault = true;
}
}
}