属性
属性名 | 操作 | 博主翻译 |
---|---|---|
AllowUserToAddRows | 设置False | 是否向用户显示用于添加行的选项 |
Columns | 编辑列,找到frozen:true | 拖动滚动条时,固定此列 |
RowHeadersVisible | 设置为 false | 最左侧列是否显示 |
RowTemplate - DefaultCellStyle | DataGridViewRow默认单元格样式 | 修改选中单元格的背景颜色 |
AutoGenerateColumns | 若为true,sql语句有几列,gridview就自动显示几列;若为false,手动给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
{
}
}
}