1.默认不选定行和列
dataGridView1.ClearSelection();
2.单元格索引发生改变事件
3.根据内容自动调整行高和列宽
dataGridView1.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.AllCellsExceptHeader; ///根据数据内容自动调整列宽
dataGridView1.AutoSizeRowsMode = DataGridViewAutoSizeRowsMode.AllCellsExceptHeaders; ///根据数据内容自动调整行高
4.删除第一列空白显示
dataGridView1.RowHeadersVisible = false;
5.不允许最后一列自动添加
dataGridView1.AllowUserToAddRows = false;
6.点击列名抛异常
异常信息为:System.NullReferenceException:“未将对象引用设置到对象的实例
通过设置dataGridView1的列名点击后不允许排序即可解决此问题,如下代码
for (int i = 0; i < dataGridView1.Columns.Count; i++)
{
dataGridView1.Columns[i].SortMode = DataGridViewColumnSortMode.NotSortable; //不允许点击列明进行排序
}
7. 判断dataGridView控件中某列的值是否为空
private bool CheckData() //遍历datagridview控件中某列的值是否为空 返回真表示不为空,否则为空
{
bool isColumnEmpty = false;
string cellnumber=string.Empty;
foreach (DataGridViewRow row in dataGridView1.Rows)
{
if (row.Cells[2].Value != null && row.Cells[2].Value.ToString() != "") //列索引从0开始,当前判断第3列是否为空
{
isColumnEmpty = true;
}
else
{
cellnumber = row.Cells[0].Value.ToString(); // 获取当前行的序号
isColumnEmpty = false;
break;
}
}
if (isColumnEmpty)// isColumnEmpty=true 表示不为空
{
return true;
}
else //为空
{
MessageBox.Show($"数据缺失行的序号为{cellnumber}"); //打印缺失行的坐标(如有)
return false;
}
}
判断结果值列是否存在空数据,运行结果:输出序号为6
8.按照控件大小和列数量,自动均分列宽度
private void DgvAverage() //按照列数量,均分列宽度
{
int width = dataGridView1.Width / dataGridView1.Columns.Count; //按照控件大小和列数量计算每列宽度
foreach (DataGridViewColumn col in dataGridView1.Columns)
{
col.Width = width; //给每列宽度赋值
}
}
9.设置控件列按照比例大小进行列宽显示
private void SetDgvPercentage() //设置列宽为百分比大小
{
// 设置DataGridView的AutoSizeColumnsMode属性为Fill
dataGridView1.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill;
// 设置每列的MinimumWidth和FillWeight属性
dataGridView1.Columns[0].MinimumWidth = 100; //设置当前列的最小宽度
dataGridView1.Columns[0].FillWeight = 2; //设置比例大小
dataGridView1.Columns[1].MinimumWidth = 100;
dataGridView1.Columns[1].FillWeight = 3;
dataGridView1.Columns[2].MinimumWidth = 100;
dataGridView1.Columns[2].FillWeight = 5;
/****
...
添加其它列,如有
...
*****/
}