DataGridView设置行高无效

7
尝试在代码中设置行高,例如:

rowHeight = 50;

dgvTruckAvail.RowTemplate.Height = 48;

无法正常工作。我还尝试设置我添加的每个列的高度,但都不起作用。

这是网格的属性:

this.dgvTruckAvail.AllowUserToAddRows = false;
this.dgvTruckAvail.AllowUserToDeleteRows = false;
this.dgvTruckAvail.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) 
    | System.Windows.Forms.AnchorStyles.Left) 
    | System.Windows.Forms.AnchorStyles.Right)));
this.dgvTruckAvail.BackgroundColor = System.Drawing.Color.White;
this.dgvTruckAvail.BorderStyle = System.Windows.Forms.BorderStyle.None;
this.dgvTruckAvail.ColumnHeadersBorderStyle = System.Windows.Forms.DataGridViewHeaderBorderStyle.None;
this.dgvTruckAvail.Columns.AddRange(
    new System.Windows.Forms.DataGridViewColumn[] 
    {
        this.colMon,
        this.colTue,
        this.colWED,
        this.colThu,
        this.colFri,
        this.colSat,
        this.colSun});
this.dgvTruckAvail.Cursor = System.Windows.Forms.Cursors.Default;
dataGridViewCellStyle8.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft;
dataGridViewCellStyle8.BackColor = System.Drawing.SystemColors.Window;
dataGridViewCellStyle8.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
dataGridViewCellStyle8.ForeColor = System.Drawing.SystemColors.ControlText;
dataGridViewCellStyle8.SelectionBackColor = System.Drawing.SystemColors.Window;
dataGridViewCellStyle8.SelectionForeColor = System.Drawing.SystemColors.ControlText;
dataGridViewCellStyle8.WrapMode = System.Windows.Forms.DataGridViewTriState.False;
this.dgvTruckAvail.DefaultCellStyle = dataGridViewCellStyle8;
this.dgvTruckAvail.EnableHeadersVisualStyles = false;
this.dgvTruckAvail.Location = new System.Drawing.Point(0, 22);
this.dgvTruckAvail.Margin = new System.Windows.Forms.Padding(4);
this.dgvTruckAvail.Name = "dgvTruckAvail";
this.dgvTruckAvail.ReadOnly = true;
this.dgvTruckAvail.RowHeadersBorderStyle = System.Windows.Forms.DataGridViewHeaderBorderStyle.None;
this.dgvTruckAvail.RowTemplate.Height = 48;
this.dgvTruckAvail.RowTemplate.Resizable = System.Windows.Forms.DataGridViewTriState.True;
this.dgvTruckAvail.ShowCellToolTips = false;
this.dgvTruckAvail.Size = new System.Drawing.Size(1098, 394);
this.dgvTruckAvail.TabIndex = 0;

我不是使用网格来填充数据。行是手动添加的,单元格也是手动填充的。你有什么建议可以尝试设置它吗?也许可以以某种方式覆盖网格本身?

4个回答

14

两个建议:

1) 在绑定DGV之前设置RowTemplate.Height高度

2) 设置AutoSizeRowsMode = none, 可以使行高保持一致。

这两个建议任选其一或同时使用都可能有所帮助。


13

设置每个Height属性是有效的。

foreach (DataGridViewRow row in dataGridView1.Rows)
{
    row.Height = 80;
}

1
你说得对。看看我的另一个问题(我找到了为什么它对我不起作用的原因)https://dev59.com/Rmoy5IYBdhLWcg3wN7UX - katit
1
在将 'DataGridView.Visible' 属性设置为 'true' 后,您必须设置 row.Height。编写 'DataGridView.VisibleChanged' 事件的事件处理程序,因此当 'Visible == true' 时,设置每行的 'Height'。 - gmlobdell
1
这更有效率:dg.RowTemplate.Height = 30; - Luca Ziegler
这对我来说完美无缺!@LucaZiegler那个选项对我不起作用,我不知道为什么!我已经浏览了所有的代码,但是没有发现问题。 - f4d0

2

1
AutoSizeRowsMode 设置为 AllCells

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接