奇怪的DataGridView问题

时间:2014-01-04 11:05:20

标签: c# datagridview

我正在尝试在C#中使用DataGridView来在表中很好地显示数据。我有这个奇怪的问题,列标题不会自动调整大小。这很奇怪,因为我将代码复制到一个新项目中并且工作正常。问题可能是我将DataGridView添加到TabPage(两者都是在运行时以编程方式创建)。这是代码:

DataGridView grid = new DataGridView();

grid.AllowUserToAddRows = false;
grid.AllowUserToDeleteRows = false;
grid.RowHeadersVisible = false;
grid.MaximumSize = new System.Drawing.Size(0, 550);
grid.AutoSize = true;

grid.Columns.Add("1", "Col1");
grid.Columns.Add("2", "Col1");
grid.Columns.Add("3", "A longer name for col3");
grid.Columns.Add("4", "Col4");
grid.Columns.Add("5", "Col5");

grid.Rows.Add("Value1", "Value2", "Value3", "Value4", "Value5");

tabs.TabPages[tabIndex].Controls.Add(grid);

结果如下:

Initial result

在我拖动行分隔符以调整标题大小后会发生这种情况:

After resizing header manually

请记住,标签页是在执行上述代码之前以编程方式创建的。此外,当我不将DataGridView放在TabPage中时,代码工作正常。

有人能帮我解决这个问题吗?

2 个答案:

答案 0 :(得分:0)

使用grid.Dock代替grid.AutoSize时,可能会解决此问题。您可能需要更改grid.MaximumSize的宽度。请检查一下。

grid.MaximumSize = new System.Drawing.Size(500, 550);
grid.Dock = DockStyle.Top;

答案 1 :(得分:0)

我最终找到了一个解决方案,万一有人遇到同样的问题。我所要做的就是这样:

foreach (DataGridViewColumn col in grid.Columns)
    col.SortMode = DataGridViewColumnSortMode.Programmatic;

在此之后,列标题大小正确。