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. PyCharm:如何減少空間的水平使用
- 3. UICollection水平滾動,所以減少單元格項之間的空間
- 4. Highcharts水平堆疊酒吧,減少酒吧和X軸之間的空間
- 5. 如何減少ChartNew.js中水平堆積條的間隔?
- 6. Android:減少GridView中列間的空間
- 7. 水平空間CSS
- 8. 水平手風琴格下降減少
- 9. 爲什麼flowlayoutPanel水平延伸?
- 10. 如何減少水晶報告細節部分的空間?
- 11. 如何減少空間「isUniqueString」
- 12. 減少GridLayout Java Swing中的空間
- 13. 減少grid.arrange重複之間的空間
- 14. 之間減少空間兩款TD的
- 15. 填充水平空間
- 16. 水平SWF的空白空間
- 17. CSS額外的水平空白空間
- 18. 空間Recyclerview項目平均(水平)
- 19. 減小FlowLayoutPanel中控件之間的間距
- 20. 限制空間時減少元素之間的空間量
- 21. Java - 分配的空間不減少
- 22. 如何減少窗體間的空格?
- 23. 在div間創建水平空間
- 24. 如何減少/增加水平圖例之間的差距 - 高圖
- 25. CSS額外的水平空間
- 26. 刪除水平滾動條的空間
- 27. DIVS之間的水平空白區域
- 28. 如何在FlowLayoutPanel中禁用水平滾動條?
- 29. 減少Xaml中Listview的底部和頂部空間(UWP-Universal windows平臺)
- 30. 如何減少chart.js中的圖表網格之間的空間
問題是設置了默認高度的內部面板。 – Malcolm