コード例 #1
0
        private void menuColumnAdd_Click(object sender, EventArgs e)
        {
            if (AllowEditColumn == false)
            {
                return;
            }
            if (SelectedColumns.Count == 0)
            {
                return;
            }
            bool isLeft;

            if (sender == menuColumnAddOnLeft)
            {
                isLeft = true;
            }
            else if (sender == menuColumnAddOnRight)
            {
                isLeft = false;
            }
            else
            {
                return;
            }
            GridOilColumnGroup lastColumn = null;
            List <DataGridViewUndoRedoValue> updatedValues = null;

            if (columnList.FixColumnCount > 0)
            {
                lastColumn    = columnList.LastOrDefault();
                updatedValues = GetColumnUndoRedoValues(lastColumn);
                lastColumn.Remove();
            }
            List <GridOilColumnGroup> groups = new List <GridOilColumnGroup>();

            foreach (DataGridViewColumn c in SelectedColumns)
            {
                if (c is GridOilColumnItem)
                {
                    groups.Add((c as GridOilColumnItem).Group);
                }
            }
            groups.Distinct();
            int index = 0;

            if (groups.Count > 0)
            {
                if (isLeft)
                {
                    index = groups.Min(o => o.Index);
                }
                else
                {
                    index = groups.Max(o => o.Index) + 1;
                }
            }
            else
            {
                index = columnList.Count;
            }
            var g = columnList.Insert(index);

            if (columnList.FixColumnCount < 0)
            {
                undoRedoManager.DoAddColumn(g);
            }
            else
            {
                undoRedoManager.DoChangeColumn(lastColumn, g, updatedValues);
            }
            needSave = true;
        }