Advertisement
Guest User

Untitled

a guest
Feb 20th, 2019
85
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.37 KB | None | 0 0
  1. public class FlowPanel : Panel
  2. {
  3. protected int _TileBorder;
  4. public int TileBorder
  5. {
  6. get
  7. {
  8. return this._TileBorder;
  9. }
  10. set
  11. {
  12. this._TileBorder = value;
  13. this.RearrangeControls(this, this.TileBorder);
  14. }
  15. }
  16. public FlowPanel()
  17. {
  18. this.AutoScroll = true;
  19. }
  20. public FlowPanel(int tileBorder)
  21. {
  22. this.AutoScroll = true;
  23. this.TileBorder = tileBorder;
  24. }
  25. protected override void OnSizeChanged(EventArgs e)
  26. {
  27. base.OnSizeChanged(e);
  28. this.RearrangeControls(this, this.TileBorder);
  29. }
  30. protected override void OnControlAdded(ControlEventArgs e)
  31. {
  32. base.OnControlAdded(e);
  33. this.RearrangeControls(this, this.TileBorder);
  34. e.Control.SizeChanged += new EventHandler(this.Control_SizeChanged);
  35. }
  36. protected override void OnControlRemoved(ControlEventArgs e)
  37. {
  38. base.OnControlRemoved(e);
  39. this.RearrangeControls(this, this.TileBorder);
  40. e.Control.SizeChanged -= new EventHandler(this.Control_SizeChanged);
  41. }
  42. protected void RearrangeControls(Panel p, int border)
  43. {
  44. int num = border;
  45. int num2 = border;
  46. int num3 = 0;
  47. bool flag = true;
  48. foreach (Control control in p.Controls)
  49. {
  50. if (control != null)
  51. {
  52. num3 = ((control.Height > num3) ? control.Height : num3);
  53. if (flag)
  54. {
  55. num += control.Width + border;
  56. control.Location = new Point(border, border);
  57. flag = false;
  58. }
  59. else
  60. {
  61. if (num + control.Width + 2 * border > p.Width)
  62. {
  63. num2 += num3 + border;
  64. control.Location = new Point(border, num2);
  65. num = border + (control.Width + border);
  66. num3 = control.Height;
  67. }
  68. else
  69. {
  70. control.Location = new Point(num, num2);
  71. num += control.Width + border;
  72. }
  73. }
  74. }
  75. }
  76. }
  77. private void Control_SizeChanged(object sender, EventArgs e)
  78. {
  79. this.RearrangeControls(this, this.TileBorder);
  80. }
  81. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement