C# 窗体调整大小时如何调整datagridview控件的大小

C# 窗体调整大小时如何调整datagridview控件的大小,c#,winforms,datagridview,resize,C#,Winforms,Datagridview,Resize,我发现了很多关于当子控件调整大小时如何调整窗体大小的问题,但我正在尝试做一些更简单的事情(可能如此简单的人甚至不会问:|) 我想自动调整datagridview的宽度,以填充表单的宽度。在将datagridview简单地放置在表单上之后,调整表单大小时网格的大小保持不变。甚至当我使用小的等距捕捉工具将控件“连接”到窗体的边框时,这种情况也会发生 是否必须处理某种形式的form.resize事件,或者是否可以在VS中设置属性?使用控件锚定。将GridView的属性Anchor设置为Top、Left

我发现了很多关于当子控件调整大小时如何调整窗体大小的问题,但我正在尝试做一些更简单的事情(可能如此简单的人甚至不会问:|)

我想自动调整datagridview的宽度,以填充表单的宽度。在将datagridview简单地放置在表单上之后,调整表单大小时网格的大小保持不变。甚至当我使用小的等距捕捉工具将控件“连接”到窗体的边框时,这种情况也会发生


是否必须处理某种形式的form.resize事件,或者是否可以在VS中设置属性?

使用控件锚定。将
GridView
的属性
Anchor
设置为
Top、Left、Right
,它将随容器调整大小。如果您的
GridView
被放置在某个容器内(例如
Panel
),那么
Panel
也应该被锚定。

将控件的锚定属性设置为钩住父控件的所有边-顶部、底部、左侧、,没错。

除非我误解了您的要求,否则您可以在数据网格视图的属性上执行此操作。您需要将锚点属性设置为要将其锁定的边。

此处有两个选项:

  • 选择一,锚
  • 方案二,码头
寻找这两种属性,找出哪一种适合您的需要


在表单构造函数中,您可以创建如下事件处理程序:

this.SizeChanged(frm_sizeChanged);
然后创建适当调整网格大小的事件处理程序,例如:

private void frm_sizeChanged(object sender, EventArgs e)
{
     dataGrid.Size = new Size(100, 200);
}

将这些数字替换为您想要的任何数字。

设置DataGridView的属性:

Anchor: Top,Left
AutoSizeColumn: Fill
Dock: Fill

将布局中datagridview的“Dock”属性设置为以下属性之一:顶部、左侧、底部、右侧。好吗?

对我来说,只有将锚定设置为所有四个面时,锚定才有效:

锚定:顶部、底部、左侧、右侧


将“锚定”设置为“仅向左”,则在底部左侧调整窗体大小时,底部会移动整个对象。当调整父对象的大小时,设置所有四个大小确实会调整对象的大小。

您必须在Dock属性中选择“Fill”。

任何容器都存在“Anchor”属性:窗体、面板、组框等

您可以选择单面,例如左侧,或最多选择全部四面

“锚定”表示所选边与容器边缘之间的距离将保持不变,即使调整大小也是如此


例如,DATAGIDVIEW,<代码> DGV1,位于<代码>窗体< < /代码>的中间。“锚定”dgv1的左侧和顶部。运行应用程序并调整大小时,无论是从不同的屏幕分辨率还是更改表单大小,

dgv1
的顶部和左侧将相应更改,以保持它们与
From1
边缘的距离。底部和右侧将不显示。

如果要显示完整的标题文本

这将自动调整列的大小,以便标题显示完整的标题文本

dataGridView1.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.AllCells;
用于停靠模式

如果要在面板或窗体中显示停靠模式

dataGridView1.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill;

如果有人被这件事缠住了,以下是对我的帮助。更改锚定设置对我不起作用。我在父窗体中的窗体中使用GroupBox中的DataGridView

处理表单大小调整事件是唯一对我有效的事情

private void Form1_Resize(object sender, EventArgs e)
{
     groupBoxSampleQueue.MinimumSize = new Size((this as OperatingForm).Width - 22, 167);
     groupBoxMachineStatus.MinimumSize = new Size((this as OperatingForm).Width - 22, 167);
}

我添加了一些原始数字作为缓冲区。

这会起作用,但仅仅使用框架提供的工具会耗费更多的时间。感谢这个事件的名称,毕竟,我是否需要依赖自定义的调整大小事件处理程序。最好至少对它的工作原理做一个简短的解释,这样阅读的人就不必在心里逐行解析它来理解差异。请试着读一下,了解更多关于问题/答案的信息。你的贡献并没有回答这个问题。这更多的是一个评论,你可以添加,一旦你增加你的声誉:仅供参考,如果你没有锚定底部,那么网格会变得足够大,可以在同一容器中的任何底部停靠对象后面滑动。我还应该注意,如果你将
MaximumSize
MinimumSize
属性设置为默认值以外的任何值(
0,0
),这些都不会有任何效果。我使用的是VS2015,为了让DataGridView填充屏幕,我必须使用上面的设置+AutoSizeColumnsMode=fill…尝试了默认锚点设置=top,left+AutoSizeColumnsMode=fill+AutoSizeRowsMode=fill和其他选项,但没有起作用。