单元格和组(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");
}
}