Beispiel #1
0
        private static void OnDockChanged(RadObject obj, RadPropertyChangedEventArgs e)
        {
            RadElement reference = obj as RadElement;

            if (reference != null)
            {
                DockLayoutPanel panel = reference.Parent as DockLayoutPanel;
                if (panel != null)
                {
                    panel.InvalidateMeasure();
                }
            }
        }
Beispiel #2
0
        protected override SizeF ArrangeOverride(SizeF arrangeSize)
        {
            RadElementCollection children = this.Children;
            int   count = children.Count;
            int   num1  = count - (this.LastChildFill ? 1 : 0);
            float x     = 0.0f;
            float y     = 0.0f;
            float num2  = 0.0f;
            float num3  = 0.0f;

            for (int index = 0; index < count; ++index)
            {
                RadElement element = children[index];
                if (element != null)
                {
                    SizeF      desiredSize = element.DesiredSize;
                    RectangleF finalRect   = new RectangleF(x, y, Math.Max(0.0f, arrangeSize.Width - (x + num2)), Math.Max(0.0f, arrangeSize.Height - (y + num3)));
                    if (index < num1)
                    {
                        switch (DockLayoutPanel.GetDock(element))
                        {
                        case Dock.Left:
                            x += desiredSize.Width;
                            finalRect.Width = desiredSize.Width;
                            break;

                        case Dock.Top:
                            y += desiredSize.Height;
                            finalRect.Height = desiredSize.Height;
                            break;

                        case Dock.Right:
                            num2           += desiredSize.Width;
                            finalRect.X     = Math.Max(0.0f, arrangeSize.Width - num2);
                            finalRect.Width = desiredSize.Width;
                            break;

                        case Dock.Bottom:
                            num3            += desiredSize.Height;
                            finalRect.Y      = Math.Max(0.0f, arrangeSize.Height - num3);
                            finalRect.Height = desiredSize.Height;
                            break;
                        }
                    }
                    element.Arrange(finalRect);
                }
            }
            return(arrangeSize);
        }
Beispiel #3
0
        protected override SizeF MeasureOverride(SizeF constraint)
        {
            RadElementCollection children = this.Children;
            float val1_1 = 0.0f;
            float val1_2 = 0.0f;
            float val2_1 = 0.0f;
            float val2_2 = 0.0f;
            int   index  = 0;

            for (int count = children.Count; index < count; ++index)
            {
                RadElement element = children[index];
                if (element != null)
                {
                    SizeF availableSize = new SizeF(Math.Max(0.0f, constraint.Width - val2_1), Math.Max(0.0f, constraint.Height - val2_2));
                    element.Measure(availableSize);
                    SizeF desiredSize = element.DesiredSize;
                    switch (DockLayoutPanel.GetDock(element))
                    {
                    case Dock.Left:
                    case Dock.Right:
                        val1_2  = Math.Max(val1_2, val2_2 + desiredSize.Height);
                        val2_1 += desiredSize.Width;
                        continue;

                    case Dock.Top:
                    case Dock.Bottom:
                        val1_1  = Math.Max(val1_1, val2_1 + desiredSize.Width);
                        val2_2 += desiredSize.Height;
                        continue;

                    default:
                        continue;
                    }
                }
            }
            return(new SizeF(Math.Max(val1_1, val2_1), Math.Max(val1_2, val2_2)));
        }