调整DataGridView的大小

时间:2011-10-16 08:22:38

标签: c# datagridview

我有一个包含Checkboxes的列。

我的主要问题是,当我调用此函数时:

dataGrid.AutoResizeColumn(0, DataGridViewAutoSizeColumnMode.DisplayedCells);  

它也会拉伸复选框列,我希望该列的宽度保持在25。

我该怎么做? (仅复选框列未拉伸)


这是一些代码,显示了我想要发生的事情:

dataGrid.AutoResizeColumn(0, DataGridViewAutoSizeColumnMode.DisplayedCells);
dataGrid.AutoResizeColumn(1, DataGridViewAutoSizeColumnMode.Fill); 
dataGrid.AutoResizeColumn(2, DataGridViewAutoSizeColumnMode.Fill); 
dataGrid.AutoResizeColumn(3, DataGridViewAutoSizeColumnMode.DisplayedCells);
dataGrid.AutoResizeColumn(4, DataGridViewAutoSizeColumnMode.Fill); 
dataGrid.AutoResizeColumn(5, DataGridViewAutoSizeColumnMode.Fill); 

但填充给了我一个错误。

2 个答案:

答案 0 :(得分:2)

你问的内容没有多大意义,因为你显示AutoResizeColumn的方法将第一个参数作为要调整大小的列索引 - 如果你用复选框列的索引调用这个方法,那么你明确告诉网格调整该列的大小。如果您不想调整大小,请不要这样做!

如果您将调整大小模式设置为网格的下一级别,则执行以下操作:

dataGridView1.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.DisplayedCells;

现在使用这种设置大小调整模式的方法然后是,复选框将在您可能需要时更改。

答案是使用上面提到的设计师或方法,并将复选框列自动调整模式设置为

如果您必须遍历设置其AutoResize模式的列,那么您唯一的选择就是检查循环中是否有复选框列并应用其他更多列。


这是对你的评论的回答 - 你将看到的错误是AutoResizeColumn方法抛出的ArgumentException。这些都记录在AutoResizeColumn方法的MSDN页面上。 您无法指定自动调整模式为无或填充

听起来你想要的是:

// If column 3 is the checkbox column, we set its resize mode to none:
dataGridView1.Columns[3].AutoSizeMode = DataGridViewAutoSizeColumnMode.None;
// Then we set the width:
dataGridView1.Columns[3].Width = 25;
// Finally we set the rest of the grid to fill or what ever resizing you need:
dataGridView1.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill;

答案 1 :(得分:0)

您可以在datagridview_cellpainting事件中定义

private void gvDocumentList_CellPainting(object sender, DataGridViewCellPaintingEventArgs e)
{
    if (e.ColumnIndex == gvDocumentList.Columns["checkbox column name"].Index && e.RowIndex >= 0)
    {
        e.PaintBackground(e.ClipBounds, true);

        Rectangle rectRadioButton = new Rectangle();

        rectRadioButton.Width = 14;
        rectRadioButton.Height = 14;
        rectRadioButton.X = e.CellBounds.X + (e.CellBounds.Width - rectRadioButton.Width) / 2;
        rectRadioButton.Y = e.CellBounds.Y + (e.CellBounds.Height - rectRadioButton.Height) / 2;

       e.Paint(e.ClipBounds, DataGridViewPaintParts.Focus);

       e.Handled = true;
   }
}
相关问题