如何同时选择DataGrid的多行

       DataGrid控件默认情况下就是支持多行选择的,但需要按Ctrl键进行多行选择。通过声明三个Event Handlers我们可以不按Ctrl直接进行选择。依次加入相关事件,同时创建一个arraylist来存储哪几列被选中就行了,因为有时候用户会在选择中考虑,可能点了又点,点选成高亮的最后不一定是被选中的行

主要代码如下:

 1     ArrayList ArrayListSelectedRow = new ArrayList();
 2      private void DataGrid1_CurrentCellChanged(object sender, EventArgs e)
 3      {
 4         int cri = DataGrid1.CurrentRowIndex;
 5         DataGrid1.Select(cri);
 6         Console.WriteLine("In Cell Changed");
 7         DataGrid1_Click( sender,  e);
 8      }

 9      private void DataGrid1_Click(object sender, EventArgs e)
10      {
11         int cri = DataGrid1.CurrentRowIndex;
12         DataGrid1.Select(cri);
13         Console.WriteLine("In Click");
14      }

15      private void DataGrid1_MouseUp(object sender, MouseEventArgs e)
16      {
17         int cri = DataGrid1.CurrentRowIndex;
18         if(ArrayListSelectedRow.Contains(cri))
19         {
20            DataGrid1.UnSelect(cri);
21            ArrayListSelectedRow.Remove(cri);
22         }
            
23         else
24         {
25             DataGrid1.Select(cri);
26
27             ArrayListSelectedRow.Add(cri);
28         }
 
29         for (int i = 0; i < ArrayListSelectedRow.Count; i++)
30         {
31            DataGrid1.Select(int.Parse(ArrayListSelectedRow [i].ToString()));
32         }

33         Console.WriteLine("In Mouse Up");                   
34      }

35

总的来说,这样可以实现要求但是比较麻烦,如果大家有更好的办法,请留言告知我。

 

posted on 2005-12-12 16:48 Zeus 阅读(1805) 评论(5) 编辑 收藏

导航

公告

统计