WinForm DataGridView 表格控件使用

DataGridView 表格控件使用

1、光标控制

1.1选中代码控制

//让指定行处于选中状态(状态)
dataGridView1.CurrentCell = dataGridView1.Rows[selectIndex].Cells[1];
dataGridView1.CurrentRow.Selected = true;

//定位到指定行(样式)
dataGridView1.ClearSelection();
dataGridView1.Rows[selectIndex].Selected = true;

1.2增加光标定位指定行

//增加光标定位指定行
dgvMain.CurrentCell = dgvMain.Rows[datas.Count - 1].Cells[1];
dgvMain.CurrentRow.Selected = true;

1.3、获取选中单元格选中绑定的列名

var selColumnName = dgvMain.CurrentCell.OwningColumn.Name;
3、获取选中单元格或者行绑定单实体类数据
PM_Order_ProductRelateEx selData = dgvMain.CurrentRow?.DataBoundItem as PM_Order_ProductRelateEx;

 

2、场景需求,勾选单元格,获取所有当前选中数据;

//如果只用这一个时间,会出现第一个单元格修改事件,发现勾选完,光标移走才触发;

private void dgvMain_CellEndEdit(object sender, DataGridViewCellEventArgs e)
{

}

发现勾选完,光标移走才触发;

 

实现方法,两个事件;

初始化列

增加 FalseValue = 0,TrueValue=1,

            dgvMain.Columns.Add(new DataGridViewCheckBoxColumn { HeaderText = "  ", DataPropertyName = nameof(MdPrintDataFileNameEx.Check), Name = nameof(MdPrintDataFileNameEx.Check), AutoSizeMode = DataGridViewAutoSizeColumnMode.None, FalseValue = 0,TrueValue=1, Width = 30, ReadOnly = false, Frozen = true }); 
            dgvMain.Columns.Add(new DataGridViewTextBoxColumn { HeaderText = "No.", DataPropertyName = nameof(MdPrintDataFileNameEx.No), Name = nameof(MdPrintDataFileNameEx.No), AutoSizeMode = DataGridViewAutoSizeColumnMode.None, Width = 50, ReadOnly = false, Frozen = true });

 

事件代码

private void dgvMain_CurrentCellDirtyStateChanged(object sender, EventArgs e)
        {
            //提交改变,触发dataGridView1_CellValueChanged事件,以便及时获取check的值改变事件
            if (dgvMain.IsCurrentCellDirty)
            {
                dgvMain.CommitEdit(DataGridViewDataErrorContexts.Commit);
            }
               
        }

        private void dgvMain_CellValueChanged(object sender, DataGridViewCellEventArgs e)
        {
            QueryDtl();
        }

 

 

posted @ 2024-01-17 20:30  博客YS  阅读(91)  评论(0)    收藏  举报