DataGridView的属性、事件、方法

属性

属性名 操作 博主翻译
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
                {
                }
            }
        }
用到一个记录一个 以后慢慢补充

你可能感兴趣的:(.NET,Framework,c#,winform)