daily pastebin goal
4%
SHARE
TWEET

Untitled

a guest Feb 20th, 2019 70 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  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. }
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
 
Top