public void Add(TabCursor item) { if (_cursors.Any(cursor => cursor.Name.Equals(item.Name)) || _cursors.Count >= MaxCursorCount) { return; } if (0 == _cursors.Count) { _adapter.RefreshPosition(); } item.Initialize(this); if (string.IsNullOrWhiteSpace(item.Name)) { for (int i = 1; i < MaxCursorCount + 1; i++) { string cursorName = string.Format(CursorNameFormat, i); if (!_cursors.Any(cursor => cursor.Name.Equals(cursorName))) { item.Name = cursorName; item.Color = _cursorPalette[(i - 1) % _cursorPalette.Length]; break; } } } _cursors.Add(item); _baseChart.Controls.Add(item.Control); _adapter.MoveCursorToTarget(item); SetCursorXBoundry(item); AttachOrDetachPaintEvent(); _parentChart.OnTabCursorChanged(item, TabCursorOperation.CursorAdded, null); }