Set table lines:
FullRowSelect = true;
GridLines=true;
View=Details;
Add data with datatable:
/// <summary> /// ListView control content display /// </summary> /// <param name="dt">Data table source</param> /// <param name="liv">Control name</param> public static void LivMainDisPlay(DataTable dt, ListView liv) { for (int i = 0; i < dt.Rows.Count; i++) { ListViewItem list = new ListViewItem(); for (int j = 0; j < dt.Columns.Count - 1; j++) { list.SubItems[0].Text = dt.Rows[i][0].ToString(); list.SubItems.Add(dt.Rows[i][j + 1].ToString()); } liv.Items.Add(list); } } /// <summary> /// ListView control column name display /// </summary> /// <param name="dt">Data table source</param> /// <param name="liv">Control name</param> public static void LivColumnDisplay(DataTable dt, ListView liv) { foreach (DataColumn i in dt.Columns) { liv.Columns.Add(i.ColumnName); } liv.AutoResizeColumns(ColumnHeaderAutoResizeStyle.HeaderSize); }
The calling sequence is as follows:
listview1.Clear();
LivMainDisPlay(dt,listview1);
LivColumnDisplay(dt,listview1);
Set the table mouse movement background to change:
private void lst_ItemMouseHover(object sender, ListViewItemMouseHoverEventArgs e) { foreach (ListViewItem item in this.lst.Items) { if(e.Item!=item) item.BackColor = Color.White; } e.Item.BackColor = Color.Red; }
Click on a line to copy the selected text (to the system clipboard):
private void lst_Click(object sender, EventArgs e)
{
int selectCount = lst.SelectedItems.Count;
if (selectCount > 0)
{
System.Windows.Forms.Clipboard.SetText(lst.SelectedItems[0].SubItems[0].Text);
}}