我正在尝试在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);
结果如下:
在我拖动行分隔符以调整标题大小后会发生这种情况:
请记住,标签页是在执行上述代码之前以编程方式创建的。此外,当我不将DataGridView放在TabPage中时,代码工作正常。
有人能帮我解决这个问题吗?
答案 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;
在此之后,列标题大小正确。