Winform中DataGridView使用的详细介绍

单元格和组(Cells and Bands)

转载来自【https://www.cnblogs.com/xiaofengfeng/archive/2011/04/16/2018504.html
DataGridView由两种基本的对象组成:单元格(cell)和组(band)。所有的单元格都继承自DataGridViewCell基类。 两种类型的组(或称集合)DataGridViewColumn和DataGridViewRow都继承自DataGridViewBand 基类,表示一组结合在一起的单元格。

DataGridView会与一些类进行互操作,但最常打交道的则是如下三个:DataGridViewCell, DataGridViewColumn,DataGridViewRow。

转载来自【https://blog.csdn.net/achenyuan/article/details/84632751

取得当前单元格内容 :DataGridView1.CurrentCell.Value
取得当前单元格的列 Index:DataGridView1.CurrentCell.ColumnIndex
取得当前单元格的行 Index:DataGridView1.CurrentCell.RowIndex
取得当前行:dataGridView.CurrentRow;

使用 DataGridView.CurrentCellAddress 属性(而不是直接访问单元格)来确定单元格所在的
行: DataGridView.CurrentCellAddress.Y
列: DataGridView.CurrentCellAddress.X 。
当前的单元格可以通过设定 DataGridView 对象的 CurrentCell 来改变。可以通过 CurrentCell 来设定
DataGridView 的激活单元格。将 CurrentCell 设为 Nothing(null) 可以取消激活的单元格。

如何调整最后一列的宽度使其占据网格的剩余客户区?
以默认方式填充DataGridView时,可能会发生因列的宽度不够,而暴露出控件的灰色背景的情况,很不美观。将最后一列的AutoSizeMode属性设置为Fill会使该列调整大小来填充网格的剩余客户区(client area)。作为一个可选的方式,你可以设置最后一列MinimumWidth属性,以保持该列的宽度不至于太小。

转载来自【https://www.cnblogs.com/liuqifeng/p/9145922.html
1. 当前的单元格属性取得、变更
//显示当前单元格的值
Console.WriteLine(DataGridView1.CurrentCell.Value);
//显示当前单元格的列索引
Console.WriteLine(DataGridView1.CurrentCell.ColumnIndex);
//显示当前单元格的行索引
Console.WriteLine(DataGridView1.CurrentCell.RowIndex);
//(0,0)为现在的单元格
DataGridView1.CurrentCell = DataGridView1[0, 0];
2.删除
//"删除列1
DataGridView1.Columns.Remove(“Column1”);
//删除开始列
DataGridView1.Columns.RemoveAt(0);
//删除最初的行
DataGridView1.Rows.RemoveAt(0);
选择的行列删除(多行列)

foreach (DataGridViewRow r in DataGridView1.SelectedRows)
{
    if (!r.IsNewRow)
    {
        DataGridView1.Rows.Remove(r);
    }
}

3. 选择的行、列、单元格取得

Console.WriteLine("选择的单元格");
foreach (DataGridViewCell c in DataGridView1.SelectedCells)
{
    Console.WriteLine("{0}, {1}", c.ColumnIndex, c.RowIndex);
}
//显示选择的行
Console.WriteLine("被选择的行");
foreach (DataGridViewRow r in DataGridView1.SelectedRows)
{
    Console.WriteLine(r.Index);
}
//显示选择的列
Console.WriteLine("选择的列");
foreach (DataGridViewColumn c in DataGridView1.SelectedColumns)
{
    Console.WriteLine(c.Index);
}

4.指定行、列、单元格取得
[C#]

//选择(0,0)的单元格
DataGridView1[0, 0].Selected = true;
//选择索引1中的行
DataGridView1.Rows[1].Selected = true;
//选择索引2中的列
DataGridView1.Columns[2].Selected = true;

5.cellvaluechange事件

//CellValueChanged事件处理程序

private void DataGridView1_CellValueChanged(object sender, DataGridViewCellEventArgs e)
{
    DataGridView dgv = (DataGridView)sender;
    //相应地调查
    if (dgv.Columns[e.ColumnIndex].Name == "Column1")
    {
        //获取单元格值
        string val = dgv[e.ColumnIndex, e.RowIndex].Value as string;
        if (!string.IsNullOrEmpty(val) && !this.autoCompleteSource.Contains(val))
        {
            //添加到自动压缩机列表
            autoCompleteSource.Add(val);
        }
    }
}

6.datagridview某个单元格中自动获得焦点
由于datagridview里没有focus()事bai件,所以du要想使datagrieview单元zhi格自动获取焦点,首dao先要使该单元格成为currentcell,接着让BeginEdit(true),这样datagridview上的单元格就会像textbox等一样自动获取焦点,代码如下

 dataGridView1.CurrentCell= dataGridView1[0,0];
 dataGridView1.BeginEdit(true);

7.c# 选中dataGridView中的一行将其删除

        private void button5_Click(object sender, EventArgs e)//删除一行,但是数据库中内容没有删除
        {
          //方法一
            try
            {
                if (this.dataGridView1.SelectedRows.Count > 0)
                {
                    DataRowView drv = dataGridView1.SelectedRows[0].DataBoundItem as DataRowView;
                    drv.Delete();
                }

            }
            catch(Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
            //方法二
             if( dataGridView1.Rows.Count>0)
            {
                int t = dataGridView1.SelectedRows[0].Index;// 获取当前行的行号,第一行默认是0
                if (t < 0)
                {
                    MessageBox.Show("没有选中任何行", "Error");
                    return;
                }
                else if (MessageBox.Show("确认删除选中的行", "请确认", MessageBoxButtons.YesNo,MessageBoxIcon.Information) == DialogResult.Yes)
                {
                    dataGridView1.Rows.RemoveAt(t);
                }

            }
        }

8.DataGirdViewCheckBoxColumn的使用,点击之后点击之后触发事件。

private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e)//一定要用CellContentClick事件
        {
            string _selectValue = dataGridView1.Rows[dataGridView1.CurrentCell.RowIndex].Cells["PLOT"].EditedFormattedValue.ToString();
            if (_selectValue == "True")
            {
                MessageBox.Show("CG");
            }
        }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值
>