コード例 #1
0
        // Спуск строки
        private void MoveRowDown_Click(object sender, EventArgs e)
        {
            // Контроль
            if ((MainDataGrid.Rows.Count < 2) || (MainDataGrid.SelectedCells[0].RowIndex == MainDataGrid.Rows.Count - 1))
            {
                return;
            }

            DataTable table = (DataTable)MainDataGrid.DataSource;

            // Фиксация индекса
            int insertedIndex = MainDataGrid.SelectedCells[0].RowIndex + 2;

            // Добавление и заполнение строки
            table.Rows.InsertAt(table.NewRow(), insertedIndex);
            table.Rows[insertedIndex].ItemArray =
                (object[])table.Rows[insertedIndex - 2].ItemArray.Clone();

            // Удаление старой строки
            table.Rows.RemoveAt(insertedIndex - 2);

            // Переход на сдвинутую строку
            MainDataGrid.ClearSelection();
            MainDataGrid.Rows[insertedIndex - 1].Cells[0].Selected = true;
        }
コード例 #2
0
        // Удаление строк
        private void DeleteRow_Click(object sender, EventArgs e)
        {
            // Контроль количества строк
            if (MainDataGrid.Rows.Count <= 2)
            {
                MessageBox.Show(Localization.GetText("NotEnoughRowsError", language), ProgramDescription.AssemblyTitle,
                                MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                return;
            }

            DataTable  table   = (DataTable)MainDataGrid.DataSource;
            List <int> indices = new List <int> ();

            // Индексирование удаляемого диапазона
            for (int i = 0; i < MainDataGrid.SelectedCells.Count; i++)
            {
                if (!indices.Contains(MainDataGrid.SelectedCells[i].RowIndex))
                {
                    indices.Add(MainDataGrid.SelectedCells[i].RowIndex);
                }
            }
            indices.Sort();

            // Удаление
            for (int i = 0; i < indices.Count; i++)
            {
                table.Rows.RemoveAt(indices[i] - i);
            }

            // Переход на заведомо оставшуюся строку
            if ((indices.Count != 0) && (MainDataGrid.Rows.Count != 0))
            {
                MainDataGrid.ClearSelection();
                if (indices[0] - 1 < 0)
                {
                    MainDataGrid.Rows[0].Cells[0].Selected = true;
                }
                else
                {
                    MainDataGrid.Rows[indices[0] - 1].Cells[0].Selected = true;
                }
            }
        }