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; } } }
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); } }
public void UpdateEditorBounds() { if (_currentEditor != null) { EditorContext context = new EditorContext(); context.Owner = _currentEditorOwner; context.CurrentNode = CurrentNode; context.Editor = _currentEditor; context.DrawContext = _measureContext; SetEditorBounds(context); } }
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; } } }