如何调整表单大小以自动适应其内容?我正在尝试实现以下行为:在表单上有一个tabcontrol。在该选项卡控件上有一个树视图。为了防止出现滚动条,我希望表单在首次显示时根据树视图的内容更改其大小。如果树视图中的节点太多而无法以窗体的默认大小显示,则窗体应更改其大小,以便树视图上没有垂直滚动条(达到屏幕尺寸允许的最大尺寸)。我需要知道的是是否可以通过控件的属性实现此行为。我确信这可以通过以编程方式计算和设置元素的大小来实现,但我想知道是否有一种方法可以使用AutoSizeMode等设置来做到这一点。[更新]这是我的应用程序用户看到的第一个对话框:这是一个选择要使用的数据库的对话框。这是一个包含选项卡控件、按钮等的数据库列表。如果列表太长,则会出现滚动条,我的同事希望它们消失。使用AutoSize和AutoSizeMode属性。http://msdn.microsoft.com/en-us/library/system.windows.forms.form.autosize.aspx一个例子:privatevoidForm1_Load(objectsender,EventArgse){//不小于设计时大小this.MinimumSize=newSystem.Drawing.Size(this.Width,this.Height);//不大于屏幕尺寸this.MaximumSize=newSystem.Drawing.Size(Screen.PrimaryScreen.Bounds.Width,Screen.PrimaryScreen.Bounds.Height,(int)System.Windows.SystemParameters.PrimaryScreenHeight);this.AutoSize=true;this.AutoSizeMode=AutoSizeMode.GrowAndShrink;//其余代码在这里...}通过使用各种调整大小的属性(Dock、Anchor)或容器控件(Panel、TableLayoutPanel、FlowLayoutPanel等),您只能指定从外部控件到内部控件的大小。但是在.Net框架中没有任何东西(工作)允许容器的大小由子控件的大小决定。我也错过了几次并尝试了AutoSize属性,但它从未奏效。所以你所能做的就是尝试手动完成,抱歉。来自MSDN:为了最大限度地提高工作效率,Windows窗体设计器自动调整了Form类的AutoSize属性。在设计时,窗体的行为就好像AutoSize属性设置为false,而不管其实际设置如何。在运行时,不进行任何特殊调整,并按照属性设置的指定应用AutoSize属性。您可以通过计算节点的高度,将其乘以节点数,然后相应地设置窗体的MinimumSize属性来计算TreeView所需的高度。//假设树视图已填充!nodeHeight=treeview1.Nodes[0].Bounds.Height;this.MaximumSize=newSize(someMaximumWidth,someMaximumHeight);intrequiredFormHeight=(treeView1.GetNodeCount(true)*nodeHeight);this.MinimumSize=newSize(this.Width,requiredFormHeight);注意。这假定treeview1是窗体上的唯一控件。设置requiredFormHeight变量时,您需要考虑树视图周围的其他控件和高度要求,例如您提到的tabcontrol。(但我同意@jgauffin并评估在未经用户同意的情况下在每次加载时调整表单大小的要求背后的基本原理-也许让用户定位和调整表单大小并记住它??)它可能非常有效。它根据用户控件调整新窗体的大小,然后将用户控件锚定到新窗体:Formf=newForm();MyUserControlmuc=newMyUserControl();f.ClientSize=muc.Size;f.Controls.Add(muc);muc.Anchor=AnchorStyles.顶部|AnchorStyles.底部|AnchorStyles.左|AnchorStyles.Right;f.ShowDialog();这项技术解决了我的问题:在父表单中:frmEmployeefrm=newfrmEmployee();frm.MdiParent=这个;frm.Dock=DockStyle.Fill;frm.Show();在子窗体中(加载事件):this.WindowState=FormWindowState.Maximized;如果你尝试根据表格填写内容,下面的内容会有帮助。当我试图在表单上调整内容以调整表单大小时,它对我很有帮助。this.contents.Size=newSize(this.ClientRectangle.Width,this.ClientRectangle.Height);我用这段代码,效果很好以上是C#学习教程:Howtoresizeaformtoautomaticallyfititscontent?如果分享的内容对你有用,需要了解更多C#学习教程,希望大家多多关注——constintmargin=5;矩形rect=newRectangle(Screen.PrimaryScreen.WorkingArea.X+margin,Screen.PrimaryScreen.WorkingArea.Y+margin,Screen.PrimaryScreen.WorkingArea.Width-2*margin,Screen.PrimaryScreen.WorkingArea.Height-2*(margin-7));this.Bounds=rect;本文收集自网络,不代表任何内容,如涉及侵权,请点击右边联系管理员删除。如需转载请注明出处:
