Пример #1
0
        // 将控件放到指定的容器内,
        public void FindContain(PbBaseControlInfo control, int x, int y)
        {
            if (control is PbTextInfo)
            {
                var tempControl = control as PbTextInfo;
                if (tempControl.Name == "code")
                {
                    return; //主键不参与布局
                }
            }

            //若没有容器  //单grid的情况 或者是 tableLayout
            if (containers.Count == 0)
            {
                if (control is PbGridInfo)
                {
                    var tempPanel = control as PbGridInfo;
                    grids.Add(ControlConverter.ConvertToExtPanel(tempPanel));
                }
                else
                {
                    layoutForm.Items.Add(control);
                }
                return;
            }
            ExtContainer targetContain = new ExtContainer();

            int i = 0;

            do
            {
                targetContain.X      = containers[i].X;
                targetContain.Y      = containers[i].Y;
                targetContain.Width  = containers[i].Width;
                targetContain.Height = containers[i].Height;

                if (x >= targetContain.X && x <= targetContain.X + targetContain.Width &&
                    y >= targetContain.Y && y <= targetContain.Y + targetContain.Height)
                {
                    containers[i].Items.Add(control);
                    break;
                }
                i++;
            } while (i < containers.Count);

            //if (i == containers.Count)
            //{
            //    if (control is PbGridInfo)
            //    {
            //        var tempPanel = control as PbGridInfo;
            //        grids.Add(ControlConverter.ConvertToExtPanel(tempPanel));
            //    }
            //    else
            //    {
            //        layoutForm.Items.Add(control);
            //    }
            //}
        }
Пример #2
0
        //将控件放到指定的容器内
        public void FindContain(PbBaseControlInfo control, int x, int y)
        {
            if (control is PbTextInfo)
            {
                var tempControl = control as PbTextInfo;
                if (tempControl.Name == "code")
                {
                    return; //主键不参与布局
                }
            }

            //若没有容器,放入formpanel
            if (fieldSets.Count == 0)
            {
                formPanel.Items.Add(control);
                return;
            }

            ExtContainer targetContain = new ExtContainer();
            int          i             = 0;

            do
            {
                targetContain.X      = fieldSets[i].X;
                targetContain.Y      = fieldSets[i].Y;
                targetContain.Width  = fieldSets[i].Width;
                targetContain.Height = fieldSets[i].Height;

                //坐标落入容器里
                if (x >= targetContain.X && x <= targetContain.X + targetContain.Width &&
                    y >= targetContain.Y && y <= targetContain.Y + targetContain.Height)
                {
                    fieldSets[i].Items.Add(control);
                    break;
                }
                i++;
            } while (i < fieldSets.Count);
        }
Пример #3
0
        //将控件放到指定的容器内
        public void FindContain(PbBaseControlInfo control, int x, int y)
        {
            if (control is PbTextInfo)
            {
                var tempControl = control as PbTextInfo;
                if (tempControl.Name == "code")
                {
                    return; //主键不参与布局
                }
            }

            if (control.Visible == false && control.ControlType != PbControlType.Grid)
            {
                layoutForm.Items.Add(control);
                return;
            }

            //若没有容器  //单grid的情况 或者是 tableLayout
            if (containers.Count == 0)
            {
                if (control is PbGridInfo)
                {
                    grids.Add(ControlConverter.ConvertToExtPanel((PbGridInfo)control));
                }
                else
                {
                    layoutForm.Items.Add(control);
                }
                return;
            }
            else
            {
                //有容器(就是pb的groupbox和ng3中的fieldset)
                ExtContainer targetContain = new ExtContainer();

                int i = 0;
                do
                {
                    targetContain.X      = containers[i].X;
                    targetContain.Y      = containers[i].Y;
                    targetContain.Width  = containers[i].Width;
                    targetContain.Height = containers[i].Height;

                    if ((x * 1.3) >= targetContain.X &&
                        (x * 1.3) <= targetContain.X + targetContain.Width &&
                        y >= targetContain.Y &&
                        y <= targetContain.Y + targetContain.Height)
                    {
                        if (control is PbGridInfo)
                        {
                            containers[i].Panels.Add(ControlConverter.ConvertToExtPanel((PbGridInfo)control));  //此处会把容器内的grid放进去,后期看看是否要改
                        }
                        else
                        {
                            containers[i].Items.Add(control);
                        }


                        break;
                    }
                    i++;
                } while (i < containers.Count);

                //容器外的grid或列
                if (i == containers.Count)
                {
                    if (control is PbGridInfo)
                    {
                        var tempPanel = control as PbGridInfo;
                        grids.Add(ControlConverter.ConvertToExtPanel(tempPanel));
                    }
                    else
                    {
                        layoutForm.Items.Add(control);
                    }
                }
            }
        }