我正在开发一个 UserControl,它由一堆在 flowlayoutpanel 中的控件顶部水平排列的 ComboBox 和直接位于 flowlayoutpanel 下方的 datagridview 组成,该 datagridview 占据了控件上的所有剩余空间。我需要能够轻松隐藏所有下拉菜单,因此我有一个 Orientation == Horizontal 的 SplitContainer,其中 flowlayoutpanel 位于 SplitContainer.Panel1 中,datagridview 位于 SplitContainer.Panel2 中。
控制层次结构如下:
SplitContainer1
SplitContainer1.Panel1
FlowLayoutPanel1
ComboBox1
ComboBox2
ComboBox3
SplitContainer1.Panel2
DataGridView1
由于 flowlayoutpanel 是水平定向的并且水平空间有限,因此 flowlayoutpanel 的 WrapContents 属性为 True,因此当控件太窄而无法容纳一行中的所有下拉列表时,下拉列表将自动换行到下一行。
我遇到的问题是,当 flowlayoutpanel 将其内容包装到下一行时,其 Height 属性不会相应更改。 flowlayoutpanel 的包裹行会被剪裁,并且不会强制 splitcontainer 面板相应地增加高度。我尝试处理 FlowLayoutPanel.Resize 事件以增大和缩小 SPlitContainer.SplitterDistance 属性以容纳包装的内容,但 FlowLayoutPanel.Height 属性在内容包装时不会更改。我很困惑。 FlowLayoutPanel 是否损坏?如果 FlowLayoutPanel.Height 始终保持不变,无论内容如何换行,如何调整 FlowLayoutPanel 的父容器的大小?
Thanks
看来你让这个对于你的需要来说有点太复杂了。您可以使用内置对接来完成您想要的事情,而无需使用SplitContainer
。像这样设置您的表单:
FlowLayoutPanel1 (Autosizse = true, Dock = Top)
ComboBox1
ComboBox2
ComboBox3
DataGridView1 (Dock = Fill)
然后当你想隐藏的时候FlowLayoutPanel1
你只需切换Visible
属性来隐藏/显示它。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)