如何同时选择DataGrid的多行

博客介绍了DataGrid控件多行选择功能,默认需按Ctrl键进行多行选择,通过声明三个Event Handlers可实现不按Ctrl直接选择,不过此方法较麻烦,还给出了转载来源。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

      

DataGrid控件默认情况下就是支持多行选择的,但需要按Ctrl键进行多行选择。通过声明三个Event Handlers我们可以不按Ctrl直接进行选择。依次加入

相关事件,同时创建一个arraylist来存储哪几列被选中就行了,因为有时候用户会在选择中考虑,可能点了又点,点选成高亮的最后不一定是被选中的行

主要代码如下:

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

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

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

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

35None.gif

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

 

转载于:https://www.cnblogs.com/Zeus/archive/2005/12/12/295654.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值