En el código New a table object, el estilo de visualización del control a menudo no es lo que queremos; al configurar las propiedades del objeto datagridview1, podemos hacer esto:
DataGridView dgv1 = new DataGridView ();
dgv1.DataSource = dt; // DataTable U otra fuente de datos
dgv1.DataBindingComplete + = DataGridView1_DataBindingComplete;
// ¿Por qué no llamar directamente a SetDataGridView_Properties (dgv1) para establecer las propiedades?
// Porque cuando el código está vinculado a la fuente de datos, la fuente de datos aún no ha implementado la representación de la vista dgv1 y las diversas propiedades de dgv1 a menudo no están vinculadas en este momento No hay diferencia en la // fuente de datos, incluido dgv1.Columns.Count sigue siendo 0. En este momento, es imposible implementar varias configuraciones para la Vista de dgv1
//
DataGridView1_DataBindingComplete实现:
private void DataGridView1_DataBindingComplete(object sender, DataGridViewBindingCompleteEventArgs e)
{
if (!(sender is DataGridView))
return;
SetDataGridView_Properties((DataGridView)sender);
}
public void SetDataGridView_Properties(DataGridView dataGridView1)
{
if (dataGridView1 == null || dataGridView1.Columns.Count == 0)
return;
//自适应宽度
int width = 0;
for (int i = 0; i < dataGridView1.Columns.Count; i++)
{
//将每一列都调整为自动适应模式
dataGridView1.AutoResizeColumn(i, DataGridViewAutoSizeColumnMode.AllCells);
//记录整个DataGridView的宽度
width += dataGridView1.Columns[i].Width;
dataGridView1.Columns[i].SortMode = DataGridViewColumnSortMode.NotSortable;
dataGridView1.Columns[i].ReadOnly = true;
}
//判断调整后的宽度与原来设定的宽度的关系,如果是调整后的宽度大于原来设定的宽度,
//则将DataGridView的列自动调整模式设置为显示的列即可,
//如果是小于原来设定的宽度,将模式改为填充。
if (width > dataGridView1.Size.Width)
{
dataGridView1.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.DisplayedCells;
}
else
{
////冻结某列 从左开始 0,1,2
dataGridView1.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill;
}
////冻结某列 从左开始 0,1,2
// ((DataGridView)dataGridView1).Columns[((DataGridView)dataGridView1).ColumnCount - 1].Frozen = true;
((DataGridView)dataGridView1).Columns[2].Frozen = true;
dataGridView1.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.EnableResizing;
dataGridView1.ColumnHeadersHeight = 30;
dataGridView1.RowHeadersWidth = 30;
for (int i = 0; i < dataGridView1.Rows.Count; i++)
{
dataGridView1.Rows[i].Height = 28;
}
//标题居中
dataGridView1.ColumnHeadersDefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleLeft;
dataGridView1.ForeColor = Color.Black;
dataGridView1.BackgroundColor = Color.White;
dataGridView1.AllowUserToAddRows = false;
//dataGridView1.Refresh();
}
其他属性:
dgv1.ReadOnly = true;