您可以指定用户是否可以调整列和行的大小,设置AllowUserToResizeColumns 和AllowUserToResizeRows 属性:
dataGridView1.AllowUserToResizeColumns = false;
dataGridView1.AllowUserToResizeRows = false;
您还需要禁用自动调整列大小功能(AutoResizeColumns 属性),以便您可以指定自定义度量:
dataGridView1.AutoResizeColumns(DataGridViewAutoSizeColumnsMode.None);
dataGridView1.RowHeadersWidthSizeMode = DataGridViewRowHeadersWidthSizeMode.DisableResizing;
禁用列和行的wrap mode:
dataGridView1.ColumnHeadersDefaultCellStyle.WrapMode = DataGridViewTriState.False;
dataGridView1.RowTemplate.DefaultCellStyle.WrapMode = DataGridViewTriState.False;
将RowTemplate 设置为一些特定的值;当没有指定其他样式时使用此样式。当宿主窗体更改自己的样式时,防止网格更改其样式(可能还有布局)非常有用:
(字体和单元格的ForeColor 和BackColor 都很重要)
dataGridView1.RowTemplate.DefaultCellStyle.Font =
new Font("Segoe UI", 9.25f, FontStyle.Regular, GraphicsUnit.Point);
dataGridView1.RowTemplate.DefaultCellStyle.BackColor = Color.White;
dataGridView1.RowTemplate.DefaultCellStyle.ForeColor = Color.Black;
dataGridView1.RowTemplate.DefaultCellStyle.SelectionBackColor = SystemColors.Highlight;
dataGridView1.RowTemplate.DefaultCellStyle.SelectionForeColor = SystemColors.HighlightText;
如果您需要特定的行,您可以确定行的高度。注意不能将行高设置为字体的确切大小,否则 CheckBox 和 ComboBox 等控件将不适合并且不会被绘制。
在这里,我使用TextRenderer.MeasureText 方法来测量使用RowTemplate.DefaultCellStyle.Font 中设置的Font 的字符串。
dataGridView1.RowHeadersWidth = 40;
dataGridView1.RowTemplate.Height = TextRenderer.MeasureText(
"Sample Text", dataGridView1.RowTemplate.DefaultCellStyle.Font).Height + 4;
由于环绕模式被禁用,您可以只使用AutoSizeRowsMode,将其设置为DataGridViewAutoSizeRowsMode.AllCells。
现在,在设置 DataGridView.DataSource 之后,您还可以将所有列的宽度设置为相同的值(或任何其他自定义值):
(这里所有Columns的Width设置为150像素)
dataGridView1.DataSource = [DataTable];
dataGridView1.Columns.OfType<DataGridViewColumn>().ToList().ForEach(c => c.Width = 150);