您的位置:首页 > 其它

DataGridView一些技巧[不断更新]

2010-06-30 21:51 281 查看
1,绑定下拉列表列

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

validate.DataSource = mydatasource;
validate.DisplayMember = display;
validate.ValueMember = value;


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

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

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

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

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

代码

/// <summary>
/// 给datagridview添加鼠标滚轮事件
/// </summary>
/// <param name="dataGridView1"></param>
public static void bindMouseWheel(System.Windows.Forms.DataGridView dataGridView1)
{
dataGridView1.MouseWheel += new System.Windows.Forms.MouseEventHandler(dataGridView1_MouseWheel);
dataGridView1.TabIndex = 0;//获得焦点
}

static void dataGridView1_MouseWheel(object sender, System.Windows.Forms.MouseEventArgs e)
{
DataGridView dataGridView1 = sender as DataGridView;
try
{
if (dataGridView1.CurrentCell != null)
{
DataGridViewCell dvc = dataGridView1.CurrentCell;
int ri = dvc.RowIndex;
int ci = dvc.ColumnIndex;
if (e.Delta > 0)//向上
{
if (ri > 0)
{
dvc = dataGridView1.Rows[ri - 1].Cells[ci];
dataGridView1.CurrentCell = dvc;
}
}
else
{
if (ri < dataGridView1.Rows.Count - 1)
{
dvc = dataGridView1.Rows[ri + 1].Cells[ci];
dataGridView1.CurrentCell = dvc;
}
}
}
}
catch
{
return;
}
}


调用

Helper.GridviewExtend.bindMouseWheel(dataGridView1);


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

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

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

另外,我之所以把它封闭起来而不是直接写DGV的事件纯粹是为了方便调用
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: