我正在使用C#中的表单应用程序,并且我一直处于DataGridView
的宽度。
我想要实现的是:
DataGridView
水平字段与数据完全一致
问题是,我不确定表中存在多少列来读取数据。 我以为我已经用以下代码达到了要求1和2:
for(int i=0; i<myDataGridView.Columns.Count; i++){
myDataGridView.Columns[i].AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill;
}
但是,我意识到这不满足要求2.如果需要更多列空间,则无法添加滚动条。如果列数多于某个值,则会隐藏列和数据单元格的某些部分。如下图所示,关系列&#34; p&#34; 隐藏 AND 没有滚动条:{{3 }}
经过一番努力,我注意到以下代码成功添加了滚动条:
for(int i=0; i<myDataGridView.Columns.Count; i++){
myDataGridView.Columns[i].AutoSizeMode = DataGridViewAutoSizeColumnMode.AllCells;
}
但是,此代码现在不符合我的第一个要求。如果需要更多空间来添加更多列,它会添加一个滚动条,但是如果只有几列它会留下未使用的区域,如下图所示(背景颜色为黑色):
现在我对如何实现这两个要求感到茫然。一种方式只满足一个要求。有人可以就如何满足这两个要求给我一些进展吗?谢谢!
答案 0 :(得分:0)
您需要设置每列的填充重量并将其自动调整模式设置为Fill
,并设置它们的最小宽度,这样它们不仅可以强制适应,无论您拥有多少列,或者用户使用的范围有多窄窗口。
myDataGridView.Columns[i].FillWeight = GetFillWeight(myDataGridView.Columns[i].Name);
myDataGridView.Columns[i].AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill;
myDataGridView.Columns[i].MinimumWidth = (int) myDataGridView.Columns[i].FillWeight;
如果您设置了列的最小宽度,并且这些列的总和超过了gridview的宽度,那么gridview将获得一个滚动条。
我建议设置FillWeight,你有一个实际设置它的功能,具体取决于它是什么列。像
这样的东西 private float GetFillWeight(string FieldName)
{
switch (FieldName)
{
case "FirstName":
case "LastName":
case "City":
return 300;
case "Sex":
return 150;
case "Age":
return 100;