DataGridView的属性、事件、⽅法
属性
属性名操作博主翻译
AllowUserToAddRows设置False 是否向⽤户显⽰⽤于添加⾏的选项
Columns编辑列,到frozen:true 拖动滚动条时,固
定此列
RowHeadersVisible设置为 false最左侧列是否显⽰
RowTemplate - DefaultCellStyle DataGridViewRow默认单元格样式修改选中单元格的
背景颜⾊
AutoGenerateColumns 若为true,sql语句有⼏列,gridview就⾃动显⽰⼏列;若为
false,⼿动给gridview绑定需要显⽰的字段
gridview不显示
数据源是否⾃动创
建绑定字段
.CurrentCell.RowIndex选中⾏的索引获取当前活动的单元格的⾏的索引
CurrentCell.Value 获取当前活动的单
元格的值
dgv.Rows[dgv.CurrentCell.RowIndex].Cells[0].Value.ToString();获取选中⾏的第零列的值获取当前活动的单
元格的值
事件
1.选定单元格的编辑模式启动时发⽣
CellBeginEdit
private void datagridview_CellBeginEdit(object sender, DataGridViewCellCancelEventArgs e)
{
if (e.RowIndex >= 0) //判断datagridview是否有数据
{
//这种情况⼀般都是⽤于:想修改此列必须先勾选前⾯的checkbox,才允许编辑
//当你双击单元格,会判断是否选中了checkBox列
if (datagridview.Columns[e.ColumnIndex].Name != "xz")
{
DataGridViewCheckBoxCell checkCell = (DataGridViewCheckBoxCell)datagridview.Rows[e.RowIndex].Cells["xz"];                    Boolean flag = Convert.ToBoolean(checkCell.Value);
if (flag == false)
{
MessageBox.Show("请先勾选在编辑!");
e.Cancel = true;
return;
}
}
}
}
2 .单击单元格的内容时发⽣
CellContentClick
private void datagridview_CellContentClick(object sender, DataGridViewCellEventArgs e)
{
if (e.RowIndex >= 0) //判断datagridview是否有数据
{
//判断列的类型(编辑列,在columnType属性查看)
DataGridViewColumn column = datagridview.Columns[e.ColumnIndex];
if (column is DataGridViewCheckBoxColumn) //如果列是下拉菜单
{
combobox.Text = datagridview.Rows[e.RowIndex].Cells["depid"].Value.ToString();
}
if (column is DataGridViewImageColumn) //如果列是图⽚
{
try
{
//传参打开另⼀个窗体
cc = new calltel(datagridview.Rows[e.RowIndex].Cells["Ext"].Value.ToString(), datagridview.Rows[e.RowIndex].Cells["Tel"].Value.ToString());                    cc.Show();
}
catch
{
};
}
}
}
3 .在释放键时发⽣(键盘按键抬起)
KeyUp
private void datagridview_KeyUp(object sender, KeyEventArgs e)
{
//前提条件是焦点在gridview ( 或者先写上 datagriview.focus() )
//这⼏⾏代码的意思是按回车会选中gridview中的值,然后可以⽤键盘的上下左右控制选择单元格,然后取值赋值
base.OnKeyUp(e);
if (e.KeyCode == System.Windows.Forms.Keys.Enter)
{
e.Handled = true;
System.Windows.Forms.SendKeys.Send("{TAB}");
}
if (e.KeyValue == 37 || e.KeyValue == 38 || e.KeyValue == 39 || e.KeyValue == 40)
{
try
{
//不加这句话有的时候会报错,未将对象引⽤到实例
if (datagridview.CurrentCell.Value == null)
{
return;
}
//将选中的单元格的值赋给textBox控件
txtbox.Text = datagridview.CurrentCell.Value.ToString();
}
catch
{
}
}
}
⽤到⼀个记录⼀个以后慢慢补充

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。