示例#1
0
 private void SetEditorBounds(EditorContext context)
 {
     foreach (NodeControlInfo info in GetNodeControls(context.CurrentNode))
     {
         if (context.Owner == info.Control && info.Control is EditableControl)
         {
             Point p = info.Bounds.Location;
             p.X += info.Control.LeftMargin;
             p.X -= OffsetX;
             p.Y -= (_rowLayout.GetRowBounds(FirstVisibleRow).Y - ColumnHeaderHeight);
             int width = DisplayRectangle.Width - p.X;
             if (UseColumns && info.Control.ParentColumn != null && Columns.Contains(info.Control.ParentColumn))
             {
                 Rectangle rect = GetColumnBounds(info.Control.ParentColumn.Index);
                 width = rect.Right - OffsetX - p.X;
             }
             context.Bounds = new Rectangle(p.X, p.Y, width, info.Bounds.Height);
             ((EditableControl)info.Control).SetEditorBounds(context);
             return;
         }
     }
 }
示例#2
0
        public void DisplayEditor(Control control, EditableControl owner)
        {
            if (control == null || owner == null)
                throw new ArgumentNullException();

            if (CurrentNode != null)
            {
                DisposeEditor();
                EditorContext context = new EditorContext();
                context.Owner = owner;
                context.CurrentNode = CurrentNode;
                context.Editor = control;

                SetEditorBounds(context);

                _currentEditor = control;
                _currentEditorOwner = owner;
                UpdateView();
                control.Parent = this;
                control.Focus();
                owner.UpdateEditor(control);
            }
        }
示例#3
0
        public void UpdateEditorBounds()
        {
            if (_currentEditor != null)
            {
                EditorContext context = new EditorContext();
                context.Owner = _currentEditorOwner;
                context.CurrentNode = CurrentNode;
                context.Editor = _currentEditor;
                context.DrawContext = _measureContext;

                SetEditorBounds(context);
            }
        }
示例#4
0
 private void SetEditorBounds(EditorContext context)
 {
     foreach (NodeControlInfo info in GetNodeControls(context.CurrentNode))
     {
         if (context.Owner == info.Control && info.Control is EditableControl)
         {
             Point p = ToViewLocation(info.Bounds.Location);
             int width = DisplayRectangle.Width - p.X;
             if (UseColumns && info.Control.Column < Columns.Count)
             {
                 Rectangle rect = GetColumnBounds(info.Control.Column);
                 width = rect.Right - OffsetX - p.X;
             }
             context.Bounds = new Rectangle(p.X, p.Y, width, info.Bounds.Height);
             ((EditableControl)info.Control).SetEditorBounds(context);
             return;
         }
     }
 }