1
A
回答
1
你可以很容易地创建你自己定制的FlowLayoutPanel的由面板获得。
尽管下面的代码为水平和垂直设置了一个统一的边框,但您可以很容易修改每个属性的水平和垂直间距。
public class FlowPanel : Panel
{
protected int _TileBorder;
public int TileBorder
{
get
{
return this._TileBorder;
}
set
{
this._TileBorder = value;
this.RearrangeControls(this, this.TileBorder);
}
}
public FlowPanel()
{
this.AutoScroll = true;
}
public FlowPanel(int tileBorder)
{
this.AutoScroll = true;
this.TileBorder = tileBorder;
}
protected override void OnSizeChanged(EventArgs e)
{
base.OnSizeChanged(e);
this.RearrangeControls(this, this.TileBorder);
}
protected override void OnControlAdded(ControlEventArgs e)
{
base.OnControlAdded(e);
this.RearrangeControls(this, this.TileBorder);
e.Control.SizeChanged += new EventHandler(this.Control_SizeChanged);
}
protected override void OnControlRemoved(ControlEventArgs e)
{
base.OnControlRemoved(e);
this.RearrangeControls(this, this.TileBorder);
e.Control.SizeChanged -= new EventHandler(this.Control_SizeChanged);
}
protected void RearrangeControls(Panel p, int border)
{
int num = border;
int num2 = border;
int num3 = 0;
bool flag = true;
foreach (Control control in p.Controls)
{
if (control != null)
{
num3 = ((control.Height > num3) ? control.Height : num3);
if (flag)
{
num += control.Width + border;
control.Location = new Point(border, border);
flag = false;
}
else
{
if (num + control.Width + 2 * border > p.Width)
{
num2 += num3 + border;
control.Location = new Point(border, num2);
num = border + (control.Width + border);
num3 = control.Height;
}
else
{
control.Location = new Point(num, num2);
num += control.Width + border;
}
}
}
}
}
private void Control_SizeChanged(object sender, EventArgs e)
{
this.RearrangeControls(this, this.TileBorder);
}
}
现在,我看它时,RearrangeControls方法并略有砍死在一起-IN-A-急于现在看我,但我敢肯定,你可以让它更好!
相关问题
- 1. 减少.NET FlowLayoutPanel的闪烁
- 2. UICollection水平滚动,所以减少单元格项之间的空间
- 3. Highcharts水平堆叠酒吧,减少酒吧和X轴之间的空间
- 4. 如何减少ChartNew.js中水平堆积条的间隔?
- 5. Android:减少GridView中列间的空间
- 6. 水平手风琴格下降减少
- 7. 为什么flowlayoutPanel水平延伸?
- 8. 减少GridLayout Java Swing中的空间
- 9. 填充水平空间
- 10. 水平SWF的空白空间
- 11. 空间Recyclerview项目平均(水平)
- 12. Java - 分配的空间不减少
- 13. 在div间创建水平空间
- 14. 如何减少/增加水平图例之间的差距 - 高图
- 15. CSS额外的水平空间
- 16. 删除水平滚动条的空间
- 17. 减少Xaml中Listview的底部和顶部空间(UWP-Universal windows平台)
- 18. 如何减少chart.js中的图表网格之间的空间
- 19. 如何在FlowLayoutPanel中禁用水平滚动条?
- 20. 如何减少两个div元素之间的空白空间
- 21. WPF:减少/删除TextBlock中文本上方的空白空间
- 22. 安排科室尽量减少空间
- 23. Opendedup不会减少存储空间
- 24. TFS 2015 - 磁盘空间持续减少
- 25. 如何减少Twitter中组件之间的空间引导
- 26. 减少processing.js碰撞检测中对象之间的空间
- 27. 如何减少字段集中元素之间的空间
- 28. 减少java中标签和广播组之间的空间
- 29. 如何减少html表中两列之间的空间
- 30. 减少grid.arrange中两个地块之间的空间
问题是设置了默认高度的内部面板。 – Malcolm