Beispiel #1
0
            //sizeにはまるようにサイズ調整
            public void AdjustSplitPosition(Size size)
            {
                if (IsLast)   //splitter持たず
                {
                    if (!IsLeaf)
                    {
                        _childList.AdjustSplitPosition(size);
                    }
                }
                else
                {
                    int splitpos = (int)(_parent.HostingLength * SumRatio(_next)) - PaneSplitter.SPLITTER_WIDTH / 2;
                    //上限・下限
                    int minimum_splitpos = _next.RequiredMinimumLength;
                    int maximum_splitpos = SizeToLength(size) - this.RequiredMinimumHostingLength - PaneSplitter.SPLITTER_WIDTH;
                    splitpos = UIUtil.AdjustRange(splitpos, minimum_splitpos, maximum_splitpos);

                    SetSplitterPosition(splitpos);

                    Size splitsize = _parent.Direction == Direction.TB ?
                                     new Size(size.Width, splitpos) : new Size(splitpos, size.Height);
                    _splitter.TargetControl.Size = splitsize; //next.HostingControl or _container

                    //末尾、次いで枝へと再帰
                    _next.AdjustSplitPosition(splitsize);

                    if (!IsLeaf)
                    {
                        Size hostingsize = _parent.Direction == Direction.TB ?
                                           new Size(size.Width, size.Height - PaneSplitter.SPLITTER_WIDTH - splitpos) : new Size(size.Width - PaneSplitter.SPLITTER_WIDTH - splitpos, size.Height);
                        _childList.AdjustSplitPosition(hostingsize);
                    }
                }
            }
Beispiel #2
0
 //サイズを指定して調整
 internal void AdjustSplitPosition(Size size)
 {
     _rootList.AdjustSplitPosition(size);
 }