private void GridTickersOnUserHitCell(object sender, MouseEventArgs mouseEventArgs, int rowIndex, FastColumn col)
        {
            if (mouseEventArgs.Button != MouseButtons.Left)
            {
                return;
            }
            var sets = (TagGraphics)gridTickers.rows[rowIndex].ValueObject;

            // добавить строку
            if (sets.IsNewRowDummy)
            {
                var newSets = new TagGraphics
                {
                    Symbol      = DalSpot.Instance.GetTickerNames().First(),
                    BarSettings = BarSettingsStorage.Instance.GetCollection().First()
                };

                // копировать существующую?
                var setsSpec = gridTickers.rows.Select(r => (TagGraphics)r.ValueObject).FirstOrDefault(r => r.IsNewRowDummy == false);
                if (setsSpec != null)
                {
                    newSets.Symbol      = setsSpec.Symbol;
                    newSets.BarSettings = setsSpec.BarSettings;
                }

                var setsList = gridTickers.rows.Select(r => (TagGraphics)r.ValueObject).ToList();
                setsList.Add(newSets);

                gridTickers.DataBind(setsList);
                AnchorDummyRow();
                gridTickers.Invalidate();
                return;
            }

            // всплывающий диалог
            if (col.PropertyName == TagGraphics.speciman.Property(s => s.Symbol) ||
                col.PropertyName == TagGraphics.speciman.Property(s => s.TimeframeString))
            {
                // показать combobox - выбор тикера / таймфрейма
                var coords = gridTickers.GetCellCoords(col, rowIndex);

                var list = col.PropertyName == TagGraphics.speciman.Property(s => s.Symbol) ? listTickers : listTimeframes;
                list.Width = col.ResultedWidth;

                var popup = new DropDownListPopup(list);
                popup.Show(gridTickers, coords.X, coords.Y + gridTickers.CellHeight);
                list.cellClicked = (obj, text) =>
                {
                    if (list == listTickers)
                    {
                        sets.Symbol = text;
                    }
                    else
                    {
                        sets.TimeframeString = text;
                    }
                    gridTickers.UpdateRow(rowIndex, sets);
                    gridTickers.InvalidateCell(col, rowIndex);
                };
                return;
            }

            // удаление
            gridTickers.rows.RemoveAt(rowIndex);
            gridTickers.Invalidate();
        }
        private void GridTickersOnUserHitCell(object sender, MouseEventArgs mouseEventArgs, int rowIndex, FastColumn col)
        {
            if (mouseEventArgs.Button != MouseButtons.Left) return;
            var sets = (TagGraphics) gridTickers.rows[rowIndex].ValueObject;

            // добавить строку
            if (sets.IsNewRowDummy)
            {
                var newSets = new TagGraphics
                    {
                        Symbol = DalSpot.Instance.GetTickerNames().First(),
                        BarSettings = BarSettingsStorage.Instance.GetCollection().First()
                    };

                // копировать существующую?
                var setsSpec = gridTickers.rows.Select(r => (TagGraphics)r.ValueObject).FirstOrDefault(r => r.IsNewRowDummy == false);
                if (setsSpec != null)
                {
                    newSets.Symbol = setsSpec.Symbol;
                    newSets.BarSettings = setsSpec.BarSettings;
                }

                var setsList = gridTickers.rows.Select(r => (TagGraphics) r.ValueObject).ToList();
                setsList.Add(newSets);

                gridTickers.DataBind(setsList);
                AnchorDummyRow();
                gridTickers.Invalidate();
                return;
            }

            // всплывающий диалог
            if (col.PropertyName == TagGraphics.speciman.Property(s => s.Symbol) ||
                col.PropertyName == TagGraphics.speciman.Property(s => s.TimeframeString))
            {
                // показать combobox - выбор тикера / таймфрейма
                var coords = gridTickers.GetCellCoords(col, rowIndex);

                var list = col.PropertyName == TagGraphics.speciman.Property(s => s.Symbol) ? listTickers : listTimeframes;
                list.Width = col.ResultedWidth;

                var popup = new DropDownListPopup(list);
                popup.Show(gridTickers, coords.X, coords.Y + gridTickers.CellHeight);
                list.cellClicked = (obj, text) =>
                    {
                        if (list == listTickers)
                            sets.Symbol = text;
                        else
                            sets.TimeframeString = text;
                        gridTickers.UpdateRow(rowIndex, sets);
                        gridTickers.InvalidateCell(col, rowIndex);
                    };
                return;
            }

            // удаление
            gridTickers.rows.RemoveAt(rowIndex);
            gridTickers.Invalidate();
        }