我在WinForms表单中设置了一个DevExpress LayoutControl。我希望LayoutControl
在调整表单大小时调整horizontally
,或者至少使LayoutControl可以由用户调整大小。
我在DevExpress的页面建议中看到将SizeConstraintsType
属性更改为"default"
。我还尝试将控件锚定到其父级的左侧和右侧。我也努力增加MaxSize
。有谁知道怎么做?
我只是想基本上想要(在HTML中)<table width=100%>
。有谁知道怎么做?
提前致谢!
答案 0 :(得分:13)
开发人员的Express LayoutControl是一个非常好的工具,但有几个陷阱。
LayoutControl本身应该调整大小,停靠在任何容器控件内,如窗体,用户控件或面板控件。在许多情况下,布局控件是你在表单/控件上放置的第一件事之一,因为其他内容都是“layedout”。因此,您应该将布局控件的“Dock”属性设置为“Fill”,或者设置为您希望其停靠的窗体/控件的所需边缘。
这里的“问题”是布局控件的内部逻辑可以限制其外部尺寸或任何内部项目,如果它能够这样做并且布局项目想要特定尺寸。这实际上比听起来更简单。
例如,假设您在布局控件中有一个标签控件。默认情况下,标签控件将自身调整大小以适合其文本的宽度。反过来,布局控件将尝试通过缩小/增加布局项的大小来适应标签所需的大小。所以这个标签控件可能会弄乱您的布局控件调整大小。我选择label作为示例,因为它是最常见的控件,会弄乱您的布局设计。
我解决这个问题的方法是将标签的“AutoSizeMode”属性更改为“vertical”(如果你想要文本换行)或“none”(如果你想强制它是布局控件想要它的大小) 。这样可以释放布局控件来做出宽度决定。
此外,如果您允许最终用户调整布局控件(例如使用DevExpress的SplitterControl),布局将再次尝试成为其最佳大小,并且不允许SplitterControl远离此最佳大小,如果另一个控件更容易调整大小(如网格,树,列表等...)。在这种情况下,向布局控件添加“EmptySpaceItem”将允许它在调整大小时填充任何空白区域。要向布局添加EmptySpaceItem,请右键单击Visual Studio设计器中的布局控件,然后选择“自定义布局”。自定义对话框将包含可以拖动到布局控件上的项目列表,包括EmptySpaceItem。