我有一个窗体和DataGridView。我在运行时填充DataGridView,所以我想知道如何根据DataGridView的大小动态调整窗体大小?有没有什么财产或方法?还是我必须自己确定尺寸并相应更新?C#自动调整窗体大小DataGridView的大小
回答
通常,控件将其大小调整为包含表单的大小。要将表单的大小调整为DataGridView的大小,您必须自行确定大小,然后设置表单的大小以匹配,记住要考虑表单菜单条所需的额外大小和/或工具栏,状态栏或其他控件。
就你而言,最好不要调整窗体大小来匹配网格视图控件。很可能,网格视图中的行数可能会超过Windows屏幕上的行数,并且您不希望在可见桌面区域下面添加表单。一般来说,这种情况正是你想要有一个可滚动的网格视图的原因 - 用于查看比在屏幕上可以适合的更多数据。
“要调整表单大小以适应DataGridView的大小,您必须自己确定大小” 有没有办法做到这一点请?我的DataGridView只有几个单元格,它是只读的。调整表格大小并不成问题,除非我不知道DGV需要多少像素。 非常感谢。 – billpg 2010-01-05 11:54:12
您可以通过计数列宽查找实际宽度。
不要忘记你的表格可能更复杂,你应该计算其他控件。
public class YourForm : Form
{
public YourForm()
{
DataGridView _dgv = new DataGridView() { Dock = DockStyle.Fill};
Controls.Add(_dgv);
}
public void CorrectWindowSize()
{
int width = WinObjFunctions.CountGridWidth(_dgv);
ClientSize = new Size(width, ClientSize.Height);
}
DataGridView _dgv;
}
public static class WinObjFunctions
{
public static int CountGridWidth(DataGridView dgv)
{
int width = 0;
foreach (DataGridViewColumn column in dgv.Columns)
if (column.Visible == true)
width += column.Width;
return width += 20;
}
}
我会去其他方向和大小的网格形式。 (一些用户可能拥有较低的资源) 设置form =>最大化的'WindowState'属性。 (可选) 设置DGV的'anchor'属性=>'上,下,左,右'。
您可以使用PreferredSize
属性(MSDN PreferredSize entry)。对于DataGridView
控件,我发现首选的宽度和高度比我预期的要大20个单位。我想控制可能会考虑滚动条来计算它的首选大小。
我发现的另一个警告是PreferredSize
计算在添加或更改表中的项目后不会立即准确。为了解决这个问题,我为RowHeadersWidthChanged
事件做了一个处理程序。
这里是我工作:
class GridToy {
private DataGridView grid;
public GridToy(DataGridView dgv) {
grid = dgv;
grid.RowHeadersWidthChanged += AdjustWidth; // Event handler.
Layout();
}
public void Layout() {
// Just do some arbitrary manipulation of the grid.
grid.TopLeftHeaderCell.Value = "Some Arbitrary Title";
}
public void AdjustWidth() {
Control horizontal = grid.Controls[0]; // Horizontal scroll bar.
Control vertical = grid.Controls[1]; // Vertical scroll bar.
grid.Width = grid.PreferredSize.Width - vertical.Width + 1;
grid.Height = grid.PreferredSize.Height - horizontal.Height + 1;
}
}
dataGridView1.AutoResizeColumns(DataGridViewAutoSizeColumnsMode.AllCells);
希望这有助于:)
int dgv_width = dataGridView1.Columns.GetColumnsWidth(DataGridViewElementStates.Visible);
int dgv_height = dataGridView1.Rows.GetRowsHeight(DataGridViewElementStates.Visible);
this.Width = dgv_width;
this.Height = dgv_height;
this.Width
调整其大小,形态的宽度。
当然,您必须添加固定值(例如边距,表格标题高度,等等)。 随着测试中,我已经达到了我工作的值(不要问为什么...):
this.Width = dgv_width + 147;
this.Height = dgv_height + 47;
你可以分类或使用的ID后的“高度”属性设置为自动的形式和这应该这样做,,
我刚试过..和它的工作
#form1{
background-color:white;
height:auto;
width:1500px;
border-top:medium solid #3399FF;
margin-top:100px;
margin-left:30px;
display: inline-block;
text-align: center;
float: none;
}
我只是把正是我在你迷路的情况下做了。不要担心其他特性还有我的设计。
在网格属性中设置AutoSizeColumnsMode :Fill
- 1. DataGridView自动调整大小
- 2. vb.net窗体自动调整大小
- 3. 窗体自动调整大小功能
- 4. 使用窗体大小自动调整DirectX控件的大小?
- 5. 调整大小主窗体调整大小(WPF,C#)
- 6. C#窗体 - 调整大小DataGridView删除滚动条
- 7. 调整窗口大小时自动调整TableLayoutPanel行的大小
- 8. DataGridView自动调整大小,但限制最大列大小
- 9. Datagridview的行自动调整大小
- 10. 的DataGridView自动调整大小操作
- 11. WPF防止datagrid自动调整窗口大小调整大小
- 12. Gridpanel在调整窗口大小时自动调整大小
- 13. 在窗口调整大小时自动调整图像大小
- 14. 调整窗体大小时自动调整列表框的大小
- 15. 调整C#Windows窗体的大小
- 16. c窗口窗体自动调整大小#
- 17. Windows窗体调整大小
- 18. 根据窗体调整大小和调整窗体控件调整大小
- 19. 如何在窗体大小调整时自动调整网格大小?
- 20. C#:使窗体不可调整大小
- 21. 如何使窗体调整大小C#
- 22. 如何在FormLayoutPanel中调整窗体的大小时调整窗体的大小?
- 23. 调整窗口大小C#
- 24. 使用JQuery调整窗口大小调整CSS字体大小
- 25. 调整DataGridView的大小
- 26. 调整窗体大小调整控件
- 27. 窗体大小调整和最大化
- 28. 自动调整大小,仅在窗口变大时调整大小
- 29. 调整大小窗口的大小
- 30. 如何自动调整窗体的大小以适应控件的大小?
请问您如何“自己确定尺寸”?我只需要知道DGV“想要”的像素数量。 (我可以设置合理的限制来阻止表单变得太大。) – billpg 2010-01-05 11:55:31