我正在开发一个UserControl,它由一堆在flowlayoutpanel中水平排列在控件顶部的ComboBoxes组成,还有一个直接位于flowlayoutpanel下方的datagridview,它占据了控件上的所有剩余空间。我需要能够轻松地隐藏所有的下拉列表,所以我有一个方向为==水平的SplitContainer,SplitContainer.Panel1中的==,以及SplitContainer.Panel2中的datagridview。
控件层次结构如下:
SplitContainer1
SplitContainer1.Panel1
FlowLayoutPanel1
ComboBox1
ComboBox2
ComboBox3
SplitContainer1.Panel2
DataGridView1由于flowlayoutpanel是水平方向的,并且水平空间有限,因此flowlayoutpanel的WrapContents属性为True,因此当控件太窄而无法容纳一行中的所有下拉列表时,下拉列表会自动换行到下一行。
我遇到的问题是,当flowlayoutpanel将其内容向下包装到下一行时,其Height属性不会相应地更改。flowlayoutpanel的包装行将被裁剪,并且不会强制拆分容器面板相应地增加高度。我曾尝试处理FlowLayoutPanel.Resize事件以增大和缩小SPlitContainer.SplitterDistance属性以容纳包装的内容,但FlowLayoutPanel.Height属性在包装内容时不会更改。我被难住了。FlowLayoutPanel是否已损坏?如果FlowLayoutPanel.Height始终保持不变,而不管内容包装如何,我如何调整FlowLayoutPanel的父容器的大小?
谢谢
发布于 2009-12-29 04:01:57
看起来你把事情搞得太复杂了,不能满足你的需要。您可以使用内置坞站来完成所需的任务,而无需使用SplitContainer。将您的表单设置为:
FlowLayoutPanel1 (Autosizse = true, Dock = Top)
ComboBox1
ComboBox2
ComboBox3
DataGridView1 (Dock = Fill)然后,当您想隐藏FlowLayoutPanel1时,您只需切换Visible属性来隐藏/显示它。
https://stackoverflow.com/questions/1971157
复制相似问题