我发现很多关于如何在子控件调整大小时调整表单大小的问题,但我正在尝试做一些更简单的事情(也许这么简单的人甚至不会问:|)
我想自动调整datagridview的宽度以填充表单的宽度。简单地将datagridview放在窗体上后,在调整窗体大小时,网格保持相同的大小。即使我使用将控件连接到表单边框的小型恒定距离快照的东西,也会发生这种情况。
我是否必须处理某些类型的form.resize事件,或者是否可以在VS中设置属性?
答案 0 :(得分:45)
使用控制锚定。将Anchor
的属性GridView
设置为Top, Left, Right
,它将使用容器调整大小。如果您的GridView
被放置在某个容器(ex Panel
)内,那么Panel
也应该被锚定。
答案 1 :(得分:20)
设置DataGridView的属性:
Anchor: Top,Left
AutoSizeColumn: Fill
Dock: Fill
答案 2 :(得分:9)
将控件的anchor属性设置为挂钩到父级的所有边 - 顶部,底部,左侧和右侧。
答案 3 :(得分:5)
这里有两个选项:
寻找两种属性并找出适合您需求的属性。
http://msdn.microsoft.com/en-us/library/system.windows.forms.control.anchor.aspx
和
http://msdn.microsoft.com/en-us/library/system.windows.forms.control.dock.aspx
答案 4 :(得分:4)
' Anchor'任何容器的属性都存在:表单,面板,组合框等。
您可以选择左侧,例如左侧,或最多四个侧面。
锚点表示所选侧面与容器边缘之间的距离保持不变,即使在调整大小时也是如此。
例如,数据网格视图dgv1
位于Form1
的中间。你的主播' dgv1的左侧和顶侧。运行应用程序并根据不同的屏幕分辨率或更改表单大小进行调整大小时,dgv1
的顶部和左侧将相应更改以保持与From1
边缘的距离。底部和右侧不会。
答案 5 :(得分:3)
在表单构造函数中,您可以创建一个这样的事件处理程序:
this.SizeChanged(frm_sizeChanged);
然后创建一个适当调整网格大小的事件处理程序,例如:
private void frm_sizeChanged(object sender, EventArgs e)
{
dataGrid.Size = new Size(100, 200);
}
用您喜欢的任何内容替换这些数字。
答案 6 :(得分:2)
如果您想要显示完整的标题文字
这将自动调整列的大小,以便标题显示完整的标题文本。
dataGridView1.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.AllCells;
对接模式
如果您想在面板或表单中显示停靠模式。
dataGridView1.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill;
答案 7 :(得分:1)
除非我误解了您的要求,否则您可以在数据网格视图的属性上执行此操作。您需要将Anchor属性设置为您想要锁定的边。
答案 8 :(得分:1)
对我来说,锚定只有在我将其设置为四个方面时才有效:
锚定:顶部,底部,左侧,右侧
将锚定设置为Left,Bottom在底部左侧调整窗体大小时移动整个对象。当调整父级的大小时,设置所有四个大小确实会调整对象的大小。
答案 9 :(得分:1)
你必须在Dock属性中选择'Fill'。
答案 10 :(得分:0)
设置" Dock"布局中datagridview的属性为以下属性之一:top,left,bottom,right。 OK?
答案 11 :(得分:0)
如果其他人对此感到困惑,这就是帮助我的地方。更改锚点设置对我不起作用。我正在父窗体内的窗体的组框内使用datagridviews。
处理表单调整大小事件是唯一对我有用的事情。
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);
}
我添加了一些原始数字作为缓冲区。