DataGridView一些技巧[不断更新]

1,绑定下拉列表列

网上大多数用法是要你在RowsAdded事件里面,找到列,然后再设置数据源,也是官方演示的做法,殊不知DGV的每一列的控件都是可以直接在后台设置属性的,并不需要循环,如下,我某列的“合格”是一个名为"validate"的列,那么你只要在代码里直接设置

1 validate.DataSource = mydatasource;
2 validate.DisplayMember = display;
3 validate.ValueMember = value;

这样,你的数据就绑定上了,相当方便 

注:RowsAdded事件严格来说并不是循环行,所以千万不要在这个事件里面写循环行来处理一些数据的代码

 

2,让单元格里的下拉列表在编辑里才显示上下箭头

很简单,设置其DisplayStyle为Nothing即可。

 

3,随鼠标滚轮而滚动选中行

代码
1
2 /// <summary>
3 /// 给datagridview添加鼠标滚轮事件
4 /// </summary>
5 /// <param name="dataGridView1"></param>
6   public static void bindMouseWheel(System.Windows.Forms.DataGridView dataGridView1)
7 {
8 dataGridView1.MouseWheel += new System.Windows.Forms.MouseEventHandler(dataGridView1_MouseWheel);
9 dataGridView1.TabIndex = 0;//获得焦点
10 }
11
12 static void dataGridView1_MouseWheel(object sender, System.Windows.Forms.MouseEventArgs e)
13 {
14 DataGridView dataGridView1 = sender as DataGridView;
15 try
16 {
17 if (dataGridView1.CurrentCell != null)
18 {
19 DataGridViewCell dvc = dataGridView1.CurrentCell;
20 int ri = dvc.RowIndex;
21 int ci = dvc.ColumnIndex;
22 if (e.Delta > 0)//向上
23 {
24 if (ri > 0)
25 {
26 dvc = dataGridView1.Rows[ri - 1].Cells[ci];
27 dataGridView1.CurrentCell = dvc;
28 }
29 }
30 else
31 {
32 if (ri < dataGridView1.Rows.Count - 1)
33 {
34 dvc = dataGridView1.Rows[ri + 1].Cells[ci];
35 dataGridView1.CurrentCell = dvc;
36 }
37 }
38 }
39 }
40 catch
41 {
42 return;
43 }
44 }

调用

Helper.GridviewExtend.bindMouseWheel(dataGridView1);

 

其中,Helper是我的帮助项目的命名空间,忽视它,

dataGridView1.TabIndex = 0;//获得焦点

这是因为mouseWheel事件只有在DGV获得焦点的时候才生效,于是设DGV的tabIndex为零,这样会默认获得窗体的焦点

另外,我之所以把它封闭起来而不是直接写DGV的事件纯粹是为了方便调用

posted @ 2010-06-30 21:51  $walker  阅读(672)  评论(0编辑  收藏  举报