提供3000多款全球软件/控件产品
针对软件研发的各个阶段提供专业培训与技术咨询
根据客户需求提供定制化的软件开发服务
全球知名设计软件,显著提升设计质量
打造以经营为中心,实现生产过程透明化管理
帮助企业合理产能分配,提高资源利用率
快速打造数字化生产线,实现全流程追溯
生产过程精准追溯,满足企业合规要求
以六西格玛为理论基础,实现产品质量全数字化管理
通过大屏电子看板,实现车间透明化管理
对设备进行全生命周期管理,提高设备综合利用率
实现设备数据的实时采集与监控
利用数字化技术提升油气勘探的效率和成功率
钻井计划优化、实时监控和风险评估
提供业务洞察与决策支持实现数据驱动决策
翻译|行业资讯|编辑:鲍佳佳|2021-01-08 10:42:19.560|阅读 650 次
概述:DotNetBar for WinForms随附的LayoutControl可帮助您创建独立于分辨率和DPI的用户界面数据输入表单。它的内置布局逻辑能够重整内容以适应可用范围和大小限制。
# 慧都年终大促·界面/图表报表/文档/IDE等千款热门软控件火热促销中 >>
DotNetBar for WinForms是一个拥有89个组件的用户界面控件套包,用户可以使用Visual Studio 2005-2015轻松地创建专业的用户界面。十多年来DotNetBar帮助开发人员轻松地创建易用的专业Windows Forms (WinForms) 用户界面。
点击下载DotNetBar for WinForms最新试用版
接上文:
布局规则
LayoutControl使用的第一个布局规则是,在将控件的固定大小的宽度相加后,控件的相对百分比大小基于可用宽度。要了解这一点,请考虑以下屏幕截图,其中承载文本框控件的布局项目的宽度设置为100%,棕色面板的固定宽度设置为100:
如果你添加更多的固定宽度控件,文本框会缩小,除非设置其最小尺寸。
如果你想让布局项占用容器的所有可用宽度,你将其宽度设置为101%。下面是我们在布局项上设置宽度=101%的文本框时的情况。
因此内置的布局规则是,当布局项的宽度设置为101%时,它将消耗容器的整个宽度。
容器中的第一个和最后一个布局项目具有特殊的布局规则。如果将第一个或最后一个项目的高度设置为100%,则它们将与左侧(第一个项目)或向右(最后一个项目)对齐,这将消耗容器的高度以及在它们之间流动的其他控件。
为了实现这一点,下面是截屏,其中第一个布局项目面板的height = 100%,注意在面板之后添加的文本框如何放置在其旁边:
现在我们将另一个绿色面板作为最后一项添加到布局中,并设置其Height = 100%,注意其如何停靠在右侧以及如何在两个面板之间布置文本框:
当在同一行上使用相对宽度尺寸和固定宽度尺寸的项目时,另一个布局规则生效。例如,将固定大小的项目后跟相对大小的项目,并将“宽度”设置为100%,将导致在下一行显示下一个项目。如果不希望这样,并且您需要将相对宽度尺寸的项目夹在固定尺寸的项目之间,则可以设置相对宽度= 99%,这将向布局引擎指示如果可能的话,下一个项目应位于同一行上。这是显示此操作的图像,其中使用Spacer一直向右按下按钮:
布局组
Layout Groups几乎就像嵌套的布局控件。LayoutGroup项目类型允许您将某些控件分组,并创建灵活的布局,否则无法实现。此外,您可以通过 LayoutGroup.Style 属性使用 LayoutGroup 样式来设置组的背景和边框颜色,甚至可以通过 LayoutGroup.Appearance 属性改变组的外观,使其呈现为我们的 PanelEx 或 GroupPanel 控件。下面是一个不使用LayoutGroup项就无法创建布局的例子。
注意,两个Width = 50%的组并排显示,左边的组包含3个文本框,右边的组包含text-box和RichTextBox控件。注意右侧的组如何通过LayoutGroup.Style属性自定义背景和边框。
每个LayoutGroup也可以显示标题/标题。设置LayoutGroup.Text将导致LayoutGroup显示标题。TextPosition属性控制在组内容的顶部,底部,底部或底部显示标题的位置。当字幕显示在左侧或右侧时,它将旋转90度。TextAlignment属性将控制字幕框中的字幕对齐方式。TextLineAlignment属性将控制标题框中的垂直文本对齐方式。CaptionStyle属性允许您设置特定于字幕的样式,包括背景色,边框颜色和类型,字体等。默认情况下,字幕高度是根据当前字体高度自动确定的,但是使用CaptionHeight属性,您可以设置以像素为单位的显式字幕高度。这是使用上述所有属性来显示LayoutGroup自定义标题的图像:
使用Appearance属性,您可以指定应使用我们预定义的系统外观之一绘制LayoutGroup。您可以将其设置为Panel或GroupPanel。Panel将使用StyleManager上设置的当前样式,使LayoutGroup像PanelEx控件一样呈现。看起来像这样:
设置Appearance = GroupPanel将呈现相同的组,如下所示:
请注意,当您设置Appearance = Panel或GroupPanel时,系统组外观将覆盖CaptionStyle和Style的任何设置(并且不使用和不可见)。
使用图像或符号属性,您可以设置将在字幕旁边显示的图像或符号。请注意,设置符号会覆盖图像。
通过代码设置
LayoutControl可以通过代码轻松设置。它涉及创建LayoutControlItem来承载一个控件,然后将控件分配给它,最后将它们都添加到LayoutControl中。这是简单的代码,它创建两个位于同一行的文本框,并在其下方的第三个文本框占用容器宽度的100%:
C#:
LayoutControlItem item = new LayoutControlItem(); TextBox tb = new TextBox(); // Connect layout item and control item.Control = tb; // This performs default setup as you see in designer // It sets default width/height and Text layoutControl2.SetupControlItem(item); // Set item label item.Text = "Text 1:"; item.Width = 50; item.WidthType = eLayoutSizeType.Percent; item.Height = 28; // Control and item are added separately // Add control layoutControl2.Controls.Add(tb); // Then add layout item layoutControl2.RootGroup.Items.Add(item); // Create second text-box tb = new TextBox(); item = new LayoutControlItem(); // Connect layout item and control item.Control = tb; layoutControl2.SetupControlItem(item); item.Text = "Text 2:"; item.Width = 50; item.WidthType = eLayoutSizeType.Percent; item.Height = 28; layoutControl2.Controls.Add(tb); layoutControl2.RootGroup.Items.Add(item); // Create third text-box which consumes all container width tb = new TextBox(); item = new LayoutControlItem(); // Connect layout item and control item.Control = tb; layoutControl2.SetupControlItem(item); item.Text = "Text 3:"; item.Width = 101; // 101% indicates consume all container width item.WidthType = eLayoutSizeType.Percent; layoutControl2.Controls.Add(tb); layoutControl2.RootGroup.Items.Add(item); // Create spacer which will push button we will create to bottom of container LayoutSpacerItem spacer = new LayoutSpacerItem(); spacer.Width = 100; spacer.WidthType = eLayoutSizeType.Percent; spacer.Height = 100; spacer.HeightType = eLayoutSizeType.Percent; spacer.MinSize = new Size(24, 24); // This ensures that spacer is at least 32 pixels in size layoutControl2.RootGroup.Items.Add(spacer); // Create the button which will be at the // bottom of the control due to spacer pushing it down Button button = new Button(); button.Text = "OK"; item = new LayoutControlItem(); // Connects button to layout item item.Control = button; layoutControl2.SetupControlItem(item); item.ControlSize = new Size(72, 28); // This will specify explicit control size // Button item will stretch over width of the container item.Width = 101; item.WidthType = eLayoutSizeType.Percent; item.Height = 32; // This will position button in right-bottom corner of item bounds button.Anchor = AnchorStyles.Right | AnchorStyles.Bottom; layoutControl2.Controls.Add(button); layoutControl2.RootGroup.Items.Add(item);
VB:
Dim item As New LayoutControlItem() Dim tb As New TextBox() ' Connect layout item and control item.Control = tb ' This performs default setup as you see in designer ' It sets default width/height and Text layoutControl2.SetupControlItem(item) ' Set item label item.Text = "Text 1:" item.Width = 50 item.WidthType = eLayoutSizeType.Percent item.Height = 28 ' Control and item are added separately ' Add control layoutControl2.Controls.Add(tb) ' Then add layout item layoutControl2.RootGroup.Items.Add(item) ' Create second text-box tb = New TextBox() item = New LayoutControlItem() ' Connect layout item and control item.Control = tb layoutControl2.SetupControlItem(item) item.Text = "Text 2:" item.Width = 50 item.WidthType = eLayoutSizeType.Percent item.Height = 28 layoutControl2.Controls.Add(tb) layoutControl2.RootGroup.Items.Add(item) ' Create third text-box which consumes all container width tb = New TextBox() item = New LayoutControlItem() ' Connect layout item and control item.Control = tb layoutControl2.SetupControlItem(item) item.Text = "Text 3:" item.Width = 101 ' 101% indicates consume all container width item.WidthType = eLayoutSizeType.Percent layoutControl2.Controls.Add(tb) layoutControl2.RootGroup.Items.Add(item) ' Create spacer which will push button we will create to bottom of container Dim spacer As New LayoutSpacerItem() spacer.Width = 100 spacer.WidthType = eLayoutSizeType.Percent spacer.Height = 100 spacer.HeightType = eLayoutSizeType.Percent spacer.MinSize = New Size(24, 24) ' This ensures that spacer is at least 32 pixels in size layoutControl2.RootGroup.Items.Add(spacer) ' Create the button which will be at the ' bottom of the control due to spacer pushing it down Dim button As New Button() button.Text = "OK" item = New LayoutControlItem() ' Connects button to layout item item.Control = button layoutControl2.SetupControlItem(item) item.ControlSize = New Size(72, 28) ' This will specify explicit control size ' Button item will stretch over width of the container item.Width = 101 item.WidthType = eLayoutSizeType.Percent item.Height = 32 ' This will position button in right-bottom corner of item bounds button.Anchor = AnchorStyles.Right Or AnchorStyles.Bottom layoutControl2.Controls.Add(button) layoutControl2.RootGroup.Items.Add(item)
本次的内容就是这些,下午我们将讲解相关布局。如果你对我们的产品感兴趣欢迎咨询获取产品授权。
本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@pclwef.cn
文章转载自:通过提供强大的3D CAD数据访问工具并适用于桌面、移动和Web的高级环境3D可视化发动机,HOOPS在提升造船设计和制造流程的效率方面发挥了重要作用。
HOOPS Luminate在汽车行业中的应用具有广泛的潜力和深远的影响。它通过提供高效的3D可视化、虚拟装配与拆解、性能分析、客户定制等功能,帮助汽车制造商在设计、生产和销售过程中提升效率、降低成本并提高产品质量。
在不断发展的软件开发世界中,使工具和框架与最新的平台版本保持同步至关重要,欢迎查阅~
全球航运业对国际贸易至关重要,全球 90% 以上的商品通过海运运输。准确监控和控制这些集装箱的移动对于维持高效的供应链至关重要。手动输入集装箱号码是这一程序的关键部分,它带来了相当大的挑战,例如人为错误和效率低下。
服务电话
重庆/ 023-68661681
华东/ 13452821722
华南/ 18100878085
华北/ 17347785263
客户支持
技术支持咨询服务
服务热线:400-700-1020
邮箱:sales@pclwef.cn
关注我们
地址 : 重庆市九龙坡区火炬大道69号6幢