WinForm ListView
今天,我學習了公共控件中的ListView的內容。
首先,在利用ListView布置界面時,有以下三個方面:
1、視圖:?
? ? ? ? ? ?在其右上方小箭頭點擊將視圖改為Details;或者右鍵屬性在外觀View將其改為Details。
2、設置列頭:
? ? ? ? ? ?在其右上方小箭頭點擊選擇編輯列,然后添加列名;或右鍵屬性-行為-Columns。
3、添加行數據?
? ? ? ? ? ?在其右上方小箭頭點擊選擇編輯項,然后將屬性Text改名,即第一列,添加成員即其它列;或右鍵屬性-行為-Items。
在進行數據庫的鏈接時,有五個方面的內容:
1、窗體加載后自動綁定顯示ListView中的數據。
辦法:數據綁定代碼寫在窗體的構造函數中。
窗體中的代碼:
public Form1(){InitializeComponent();DataBind();}public void DataBind(){listView1.Items.Clear();//1、將全部數據取出來List<Users> list = new UsersData().Select();int a = 1;//2、將數據導入到ListView中去foreach (Users u in list){ListViewItem li = new ListViewItem();li.Text = a.ToString();li.SubItems.Add(u.UserName);li.SubItems.Add(u.PassWord);li.SubItems.Add(u.NickName);li.SubItems.Add(u.SetStr);li.SubItems.Add(u.BirthdayStr);li.SubItems.Add(u.NationName);listView1.Items.Add(li);a++;}}數據訪問類UsersData中的代碼:
SqlConnection conn = null;SqlCommand cmd = null;public UsersData(){conn = new SqlConnection("server=.;database=Data0720;user=sa;pwd=123");cmd = conn.CreateCommand();}public List<Users> Select(){List<Users> list = new List<Users>();cmd.CommandText = "select *from Users";conn.Open();SqlDataReader dr = cmd.ExecuteReader();if (dr.HasRows){while (dr.Read()){Users u = new Users(){UserName = dr[0].ToString(),PassWord = dr[1].ToString(),NickName = dr[2].ToString(),Sex = Convert.ToBoolean(dr[3]),Birthday = Convert.ToDateTime(dr[4]),Nation = dr[5].ToString()};list.Add(u);}}conn.Close();return list;}2、給用戶展示最終用戶可以看得懂的數據,如:性別(男/女),生日(2000/01/20)。
辦法:利用屬性擴展,再封裝一個string類。
3、在每一條所展示的數據前添加行號。
辦法:用C#變量循環++來實現。
4、數據重復綁定。(重復點擊“查詢”按鈕,刷新查詢結果)
辦法:在綁定之前清空Items集合。
listView1.Items.Clear();
5.選中一行數據
外觀:FullRowSelect:選擇其中一項是否選中整行
? ? ? ? CheckBoxes:復選框
? ? ? ? GridLines:網格線
行為:HideSelection :當控件沒有焦點時,是否移除選定項的突出顯示
? ? ? ? HeaderStyle:列表頭的樣式
? ? ? ? HoverSelection :鼠標懸浮在項上選擇項,不好用,需停頓一會,通常與CheckBoxes連用?
重點:
1、數據如何綁定上去
2、如何將選中的數據取出來
(1)一個是FullRowSelect屬性為True可以選擇整行數據(ListView1.SelectedItems)
if (listView1.SelectedItems.Count > 1)//選擇了多行
{
MessageBox.Show("修改只允許選擇一行");
}
else if (listView1.SelectedItems.Count == 1)
{
foreach (ListViewItem li in listView1.SelectedItems)
{
if (li.Selected)
{
MessageBox.Show(li.SubItems[0].Text + li.SubItems[1].Text + li.SubItems[2].Text + li.SubItems[3].Text + li.SubItems[4].Text + li.SubItems[5].Text);
}
}
}
else//未選中
{
MessageBox.Show("請先選中您要修改的數據");
}
(2)另一個是CheckBoxes屬性為True時,可以按照復選框來選擇整行數據(ListView1.CheckedItems)
foreach (ListViewItem li in listView1.CheckedItems)
{
if (li.Checked)
{
MessageBox.Show(li.SubItems[0].Text + li.SubItems[1].Text + li.SubItems[2].Text + li.SubItems[3].Text + li.SubItems[4].Text + li.SubItems[5].Text);
}
}
轉載于:https://www.cnblogs.com/hongsen3/p/5907724.html
總結
以上是生活随笔為你收集整理的WinForm ListView的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Spring整合Hibernate。。。
- 下一篇: Unity编译Mono